From 182e1a321d41f6324573863059f6346c6be1c1b0 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Tue, 19 Mar 2019 23:35:10 +0100 Subject: [PATCH] fix & updated sources --- SanityCheck.jar | Bin 20913 -> 21814 bytes .../src/element/AngleBracketElement.java | 694 +++++++++--------- .../src/element/CommentElement.java | 122 +-- 3 files changed, 408 insertions(+), 408 deletions(-) diff --git a/SanityCheck.jar b/SanityCheck.jar index 478417de473b6dd0de5575eef4d474e2ef3d7073..46bb2a6935a37fa61c09e968f0ae46e3bf88b5e3 100644 GIT binary patch delta 11307 zcmZ8{Wl&vB(=F}<cMnc*cY+?=-QC?S9NgVq5AN>n5L|-0y9Ousd2+wH-}~PEW3QR6 zH9b?c*Y2tA>iQz^mI`oWMHxsaOfWb&I534ymjvW6$bTWt|6fSL2PgT9{NS{I(Gr~F zFXn>_K*G1XB<+Ap0#&vZ78Ef*?SEA>b8_MeEs`ODpW^3BFN%pr<B?Az$q}O8^n;Sm z)it!|-QY5x4}wqx@krQj1GtcPg)xvLsP3*v%=o)=WTMGN!d$LjUUC+$H$I<V9{Kzc zXZKEqB&m7hRhZWT*qp?eOAPsAaj7t~)tJXo?Vdwt@H8XHfSeXQsX_|!&8ic%%wy0V zLB{0`hd1j}Q*Kub1m~Py-jg*}E8jvbpxq~F-#9A!nRVQ|E9^bpu3k6>=Llc|uCT2) zs?Il#vNmoX13U3HhG)B^n>m{e!)@DxQA-<;vv90K0cg$frK{;u%7&8azJpavcskW3 zw|lYUt-h0Pz%pi)L%-r9?@tJa^jyjfq#xEj?_(>RuIr8!-osDyrP2)hSgofSzH<nM ztU!5oj05WU@2mmb9k^7ne@Z55_6hjJXI!k-ex6Mo7CYDMUa#?6tl1Zx-hu(lX5+%z zju(lZ>Q&&?=RR}u>1Q0TfUBlse>y=qd}W_ga;H6-z#eG_u%ZV)-ctb<NpK91xFogl z$pzIp<0@JQhPL|&s%(^Rz(a&BJS}ghcvT*8wn#IiWKs&^{ald#cT2oTmV(Cws)Q|t zc4hyWD^h9vy4oM1O-u+kR9&P=(Mj}4RZ0A0UI}tGJ}2|0nfn5ns}Ev^!@+7(CC5+k zuc2ewz}l*@uyA5p*snmTsK{tz&gyG2eB^GWm;4Ym21hCmaZU2xM(ws>Tph$CzF=nx z61Z4p;}Q(l+`ve(pF8Y~Mz}7x{SZ!$QR#a9xauqsu*tWmDs?Q#VXQw+Rz|$|hv{?Y z^4<w?Zqd_j5j1WxQMdN+w|032cR~$aNlnY9)J_Cp%Gm~`=2avs#!XRV=pset#rL6x zSn5aUk+Ex>BCiag(cf0|^<_P=#iPV<?V1fASOPfS5fx=%;athQn42KL!0e#F!2b6? zfcr<;7f>QV8wCtuOo0Xayc*1PI=V-22zwnPv|Bq_&@!lA$pjgm#V_5S`f}c^HDi<R z{hJ(!BJ&yYU1@}`lYk5r*>8o<V>;VsI;Zpg{#Ppr*zzrN94-B!BQ}>Bvuc^S;v{)U zG5wi!ckzHT_BX9`I=!hKcNiNa+p)T}-=^CK&NQY#=AD{TmtS9g<3k!D%k72}?ZO<% z{CYd!ESfTbnX1<lUSbG67`w-tSFok?o``4Fu0Eq;!Pk$&4dFyHi1FwU>Dku{i#J|x zY-=1ZuKvwZ1`U~|dRBUJP#3|k<Q;2?)J6eaq*QEwH>D>N4YBU>fpirQG=Kv5SZK0U z`~hwQ(Z{=PeRbf4?)d_mHU&j9KrJr-d)|%9EHwNiK1c<anGgplzKc-ab59ei2%MIV zT4I^nGG`*Qs&nqJ!q`LvXj!(Ogc@78>+%Y-YO6j(9!?4&Z%sa8+pt6^%rlAtkMFo8 zD9HLAts&yGd)t$IKK6YcS<2pv!t;u~+*1G``R;Gr)R-g_Zk~)bAim<T<;OWUfhQVh zYEC7$5Re;O5-O5WGJ;uC>?o(CKH|l!o4<*TJ_L=>3|Y5!A&A~QA(&_YCv6yNoNz*_ z6l3Z_!6ROX1K&=ZvWw0LX;fmXnNC|2Ji;7>K&Bz$5?cA7SJW}K0#d72X|A0W{8O(Z z6SgB_SpW!L2{ih0?{uqUT*<c2r>p}jiNl6rDn-L0T$3Jm2b!2s6b$gw?e!De4u2@$ zBmmX=VvGFVbNE+Zm@OP-{Qu~S>A&>#PvmU;fT4!|8$u<Cxf>0TgdqPXp0WW&oQ+Iu z%v{B7&FswVT^UVmja*z(l=W=>)nbxd!)b@y8VH|5Nu{}iz)oX`Yj}19F5nqFAuw)X zD!yv<Ds(lX>CXtsEbI>{;eL{xIP~j_P=9PR9QUh?H>ax{w)_3#U)Nx{hBE{B_8FF1 zV@B&D@U0vjDg%0U9<m#3PQbi^XZmo6$LxZghqo&-(H??0C{Z(1vAxIlXUQ>-cNz)> zH`F(N{sY$8w_>(hD&c_}Pt?i!(L+^9j@^Vb$FBmH^1(unVl=Vhpf1Sqk8;Is+qYzE zQS1J`SELboD(om}K*5Q88>no-jdsBIwG-)FRQ#~^*>-j1Ea%y{1Q^IIEz6D6T(3AN zMZbiY@XRVnj-(UI_uMDs%yclfLO_QnW^!hWyx;yXJo%k%$&bWV;ds5yF{0qp;<BF~ z4j^(?XHyhY5(Dcgx!0U6Uut54BNqzzQwbgPcAcnpHNEW;R+_L!EkJ96KI{14X05k1 zB9;HRqR^l+TYbMO3lt*{)jKW}#G%w7&Px7P&h289mAi=lVBv4oZrN=0tF&8q*_JEw z*w6s(s7}7p&pki!YXNJ4dTJ;Fr!qc9RvCJP1cwOEfKHpN`a%y`<$3i;=o@^<K!#Il z%ks~|<Z{`cSoqd#X1$4KwJQvFixIchoR09n;10%}az0@)C&f>n7Fxc45IA4Y7&YOH zF)5Z|TWR&Zck#-x$jJDt%49zpw<VZwzC-`3FPMhHCDecP6%F~H@#|lG6`<^Z|CLlQ znl=!weAXHq64OeBRPp;zDt4JTotYf?x;8VY02w4Drys%_x!1G9OBaPm#06FPRVK<E z%uQ7S#)FWswf{w8)S<^=1P|bZ2{_t#nrF9DDf`Lw(sS>8)qR}pbES1H@VtQd1}58Q zp`QG`*^mmKzKyUFs%32=PXbS4>^TIBwFao_nDT5uE~pVT!=avDuioE`P=jIn3o({p z=pY87Q>uSTWR@ZDw>ordL_aTd>$f)1s_pU}Mm!H47ThPzTbYf@9YMsaQExngp+6Ge zLXDCPy}#27mF<v0qaeCA22!#7sl?<D1eo!g4_opx?!$lESOFPE1yW<#s@2K$s~`X~ zvG}WZ@StbtR%&*5p!qN_RO@8=?eQ28w6QLfZn^?-Fq>$fo3VWA6-NB<n9%9_9p(Bo zj;bTjFN(i)rTJ_kTa%tJB8x5Y>;Hzb7SV4e+oLvh*P8w{D(p};a;ZcfpeUyg-k4rk zp<(7sM~1r;o;P<f?+6;XjH!A6ENTNC#)uw6A*@Z5s<&I`r*wSYx58^%qNOrE3b*Eu z^0E~dhO<d_#v#<{DnS%JXx~&ZYs^DlQ(#0sd63;E-xFA`8%Srkr3VEa922<EQTJCs zO4Z19dQ>^4)WBJTW0dkMtAfmYp!d+Z&Z$P!BhS`0?!gZ@<sa$8ni;LUCrrSKM+r~L zN}4QWu`b>_iamiCvZc-rZghBnCgBTiB-{^vItTW3o!ZlJ;hzIh8gK89)}(}cIj`q@ zQ`JvlE8o~A&C^DXBLjCWeW&LlYHU+Vs){g-Y+0K}YQ3!o(H<dyi#YI>1ZdM^6IaBL zP+nT1q?(t<D!Hq6UL8HjqgKGu5JN=a@h4~#`^1Leq^ev;(V^o!G*m%J1>;o~kqTtu z<W*)^7qc$Y!O3)oLH^s@qDbaK4NgkXV}5?TA08RGIl*z=yU}#Vchz*$WEZbCGS$nb zT`o^?U;XA?jw)0_*cC3b-MYqU0&7fq6YlcJ^Rp$1QUFEBZ1-&FHUf~rMv;<RzqLU9 zBnz*x)kRZyK*DHi)8JCIn?t_#tg5L1!euxXmgmcKYXQ0op3&8A>5=)-p>a_Y1!#Ig zSKsN$wjrb-rQoI_-aXtiAN~<Yy&sS4up=jE89hd8EMrTz&p@y>!WX=uay&!d&#O|6 zIHGGi*y*Wo;kXj|bPMz$h~0ryuRkZAb{smDad+PoC!EsbnYQTt0RP4<!Viw7MO27i zXiM+F&R8o;-2>NX>T5X&cur^TNu#F4QseN$L=ij{s7!TYQJ3#>|7f=Q01I|8?ii&` z`lgV+k<tC5IqNVnV_I>TWWs_XPe|FXC+pnO&(FxHfTn6Mj}5qdvN%FjDwy1ah6P8} z`g}9C#WCzDSeI?~9Hi9yJsM)y$yM$9<I>&AF_uaDTJOd>s;Zf<^&p8;GV^WI8S_(~ z%Kfla*n=$JI>An1>7sM;8S=tK^)Y58RrK_kK5S>&$nP}(?$FX7ipfZP`_{!iio|Al zbEOb~o4|Y`ni>$ULRgEEdVMUtcpQIqGIg@JovOb|v{8O;#Vf3zni5t1*Vhb_lE5MW zmP)Lt0A&t=r#L!!<L{<K<`x_V?a7+hE!*89$NXTip&0bflMf<s^JOpn6udY09`yQi zU!yBV@VO9J3U9Nk1}wk4%rw0MlHxZhc8^uQA-O2At{9+pw7A<ic>`V2*txgapkfbC z>P@r8fL5VvfZ_x>q&b^o?V_W7((MbhBJQ#J#C8aOqdyPjXKOnvOmm>_yghF20u9b> zYi$c>B2&LQh!io(>tONJiDd#Dd7p839%_Urk_SF5Kk|=OPdPf3Fw^GQ8uTD%jIj2P zy`cyP4sW2OEIAfyHrbIIv+vKohEuyxH6+2%`}CgNU7L|gTnHp4Ha(cZO`<M*S#uim zvMEpLb;azBDyuIoXwTZnvKF``1jlR#EV2<Xh(o=TW2wxXofq3yf2c;PqTAj5<xE}8 zng$m6b;zxQ+PjdQy}n_F6+<saV}qLd%x%T<KJb9Q->Dw3Fk^e_BLb;F9Y0wF0lh0# zo$%^u!rSwpYm>Okg<dU_v(kmE^#1y7vp?l*O4g0?75jnx@mCFh02pQUS+eif8%Q#t zKO$Eqs~9NH{9w+f_3>u|17g{U6mXt1qVK(AFV8TpKTQG+T`c;Yx%w?0m6?@wfA5!8 zr*Z>#Pj55+04CEh#B;C>aJGrh2`%xayxUGa!?;R0jYPscIM9MR2&1H4qZ*MIabA8! zlD!q1PtT;?5Pxxzm;5?um7oqUAv}z0JF0mx!rkQTesMVZ;3sQ-=1aJ9;hDs?&y4UA z$caT_j2~NoD`X5a-WLCANX4Tl66A!2JW3Co5TR{n4%_gx5Wu;oAwjg{<!6UQEJune zLysDdLa6AcR1KrV99Fg-Dt<szUC@3$<)ts>QxbhDOuagOTem4I5`~-Vgj+BYI~6T^ zV8K6;(Uk`d(!C<Ygf==A8$s2u9vH?LvDdJu?(znq{33X7n{y<w=j8X-K|<M8A5;f! zn0vyUBdt4y?b2Lv`UdzQ8SLrP5}g;5t&q0YN#RGqf}}hZGXuklzp_hFdWvO60g7Kd zWwoP6i=Fvt8HUxzqwJJXr<9=-Wax4eYWf=IQ&z|}qxEjBUj#KyDK#gs63z{MHcc;- zJy&riJ(<x=VnwIeCY!#8I+XqJuLc5vVdIMcd6v${I34#W;3~tBnO4h$GeSki(%9FZ z^lRJt&Q{Q-^;ofvs$Bj14W;3ZYtSZ$(}JkqB;>0vhNwJ@PN+;f*O+C+#=+2vN1o?z z)J?BO;L<iripA--7%%8%7S*<Hk|x=rBI&5wwR6e$vgaU;vyvIH+)UFVt!;tJ9XTiR zQOy3mKF`lHE=*qFkaHucTa!v%aW<cRS9VO!c|IAZ`n$0YbVA|!gJ$o9Izhi~Nx$qF z5sF}JiLeRjxbG3A-Z8$N{g`rqbi)|w+(>|O&>}^dDsGgR3zjF=B!21}ONU)!*Qt(K zw-(#$Z+Hmo`?d;?RX!L@kdOkDyoyXhB&TwwSkpSQKL)9Pwmhj%WBth7Ry3dX;uDH; zzJ>qgukdmLaAFV~e0*lR8aURBW4b~898iC^34~tX!?u;F%f}npaI)~=G?3fybvQXH zBGU$|okMWm2&J-*hc{|5g>~kge&?6Kt3%7MO`3Dca;2B4#vSBb4J-i4?#L5on~2v< zM%4SoY^8Y58=n3VhwN<sSeu*rAzdXpEYK8q?boMaI}E&GxXjDO`XhqhBTl7pGX5NU zZLw{_5xY-Uv#haCU3ECQCMVXGgQTe-VN1c5yF<4nfgt2v{TyKHJ9Q-ra|V!bj?Yo1 zje(gZmA<~AN49#RHz5M%UdAOi?WYT_$gbtdTIFQx5_mZOpa;ZSac*Vt14cf&2*)pJ z0e-Pj(c^j)ZXR<euWr>@L9F|~I^Bmyp0f3!Pezw<q1amG`LbBkvS~mC8!%x-39R)I z)BVKurEfF@O!G8^g>#;9BRi1x)!T~pA{9hYrEB$2VKmIgu~|TFP2#*ASP}mq2_G;? zwJKN_g3uvXhN*guhLZ6b1`J#S!p_l!JYL4zp;EFQPnD4LxPEq+TSe}Px-=uULG4gp zn4ZOb&d?krSlk|qwJIom@G6FC6Yk{wbei9rA{qzW(@XWQgrgKhIyEzHLvS+;vl@I; zSpS$8>fw1}$AP>@XA|e#1_meFc4P`VeZA|&JJ&=M+3~UO3^`+^Ct|fv6c#=j$m=}I z$J_|67w#V`5n<npde*F_^Y&>jl+g5<u6Cq41PjjvJJ8S_qIn3L*Y|HbkQskZP|&<n z5J)A}2i(<V)Oy4zlC{jMvfpz!P-7K@L^}DK?~qOn0f4H33Rc*HrOLkJ8hy2vj6EeU zpjim%0#<x!MA{^5l`nd-CS`#~N|at@kq}M6fv&WAGWs0>6;?zqr}7mAR29VlE9lF@ zltpPb*K`rr;ImVLj_97EvH}zi-06c-6MinF%VB92q#<c2llEQlk+>DoqG{uLP>DAE z>1pZ<KaiJ9IwcylXs=gZf;%KlS;a?_{fS+OG-RPR_nPok$A`Bx@7c*|JF5IJ(Im5U z<0SoxmWwBn|ImCCI@fts>4H{+kd5ERaaaBzJdNARoXdvE77<9kcFzB5@NX8<7sH^e zgaih5jsO2;A@X2<pGF1ZM3{e*k;VgxIQYL=i8~`FPz&Byb!kcHc*=Ck^sYe;ozw^s zm6Rg54o(DJ363<OZV_Y%mNxoRhSi*v?dO2;`TTNAi+!~o=0;hwoQ~Bu!?5qFP0g;2 z?u|Z|CDnROYvSwL!PmeoAGQpNBwV4ptfwo1rwx}Go~P_T0#CP>jnpL6h4;zD#2rz3 z#2ra$K(DsLgmd$_2`}PhZlO5DHpRoQTsS^7Y2B>)iBSM6;<Vdf{@k&o1Em^gaYltB zT4K7Ra^l>Pg^*rl;(xB=g{emVgFU*_pV;*-V#~Ux>XRn96CA{u)6HMadnVk7GshXZ znBqOU>Dv{xqxf<4>F?7#pZWFaRMH|q_aSEOz=?1CP5yfGR*LO&qET&9hlu=5!5S65 z1!1Xo;sZSsgO%-ChaAM({Wbz!^1L`cWf3-;UHa<QPWO}p?ZSuZDAh+XUtN+WvNpSh zr>^6-itX)H+BZeh`oiAjx6UZ{a=d(b40b7x^ycrpq;?st+&Xzk8Qa#T1n$06Y@8R^ z0ST3PE(*S|aPCpUUMC7fc#n_k*~dm9z&rgW)^e)NdTRITmF<-Xzg9j)wD)V}K3vo7 ziLFgbAlP^(_UhFjzQz!Bz@)v#0VhFy@>L|}Dt{+K8GadTFylfTWDx05vuyP`@$T82 zB1w1xZ2E@X_{tu}$^5~v{{&@SyWZ>B0|j@Ef>^=%JrHLE1{`b0+7%Ap1YFrjlwVYc zJJhyNJWt#ODQxpnM}zL3qcv}}xSk>)@>E{#>3{*_n?%>hE$4bHC0^CLmKxo}mn?<1 z_5!LT3!(wfpGWqCzf@3SIYr}MJJyRr=f;xPu}=_AZ^af3J50OoGe^vAb!h|lfj*FA zgUU2BY2gwvioSZJ;bvXc8s|O_uldAh6%J7V$by;?;Z${5<2~#Wk*o$vLc}4+T~rl$ z`kFWI^hgHq2v1Tta8jesiQT4pSN1>&CW>FR&08fsjO6&pfC5{kP|)&s`q+A`K}nNw z`*o7Y^S9+lW|f-tm19Jz_t3m@pecZJQcn*2r~ddsS#E2}_$uM=LCBE3aJh&rJ&7j0 zZL@ZUi-jPaN6YW8oO5{BU%nqtuwbs0!HQ^(tVVGy1fS7Mk98nfxr|!jfKHWGHD|UQ zn_$tGp$cV-Q+E_eb+;p8YPJhUJNq*o>_;U8j4P_{MCnM(>EftF?1J`mfFh_y&wINk zekH3*s}x%7@f4A=DLH7fw`c5w6^1lH+-9@0auJ4(GTf+<1ar-Az7k>(2=rfoq!o8K z0n7f%P)4EsvKWmOWQd*al)QW~mb~hHj^zb!$hXnotXtACojkNM3n($AhISo9uk8p$ zwzJFQ*Wq3U{5+G(jUC+#fUU$ac(<?S=bL4BX{w*B@tTKW;Qco&Wf5bq>=28l={<D# zOHZxA?;|}^5zj}{OS@uYBm@m5KNIRCT#;hxKN3{48N3Pb49WZ_0ATMc*ecDxg_#{k z7be?-j5ZyVDk~a;565I(Cnd%Ncbd$!`C_H^`{_Ky-Xn<@605$B0<i-Q0-z%`K^e<6 z&C0|NV3M?8b+$G51>50|vd>6EEzlyLH(TlONb6{<tL%_^EWgQ63(|xvCH+qXp?J(w zR8dgm*`|IxbL@w~J%WnBE<y$=NNX#yrVIfOAsvR%l@@xWbX4?&uub-GAy1*o&yk1T zikCag!L@F^+hS;9K&waYTZu&)#Ix?scW<?lpi1n0=DO2z#R_e9IMSemB%*tXpL%c~ znZCjV@d9?cVv81<rRp_1ClF{wbE2-AML37ICSLE6V3xshxIN($01m;CIIsuyPXuZ- zqzqhWoYBG_@3H-Td;#e=s|T$!(LKwJ8EUX3{5((^JMj(xXtdC#TYP7NFEm}s?iZM+ z`cjDxL~eMY{p=Vi6<_9hmV#OgeAbWYm144aXOOpkxBHBhC_N>>7h>SwKD0<Li9ycA z2cneRKfPf3JGX6CVg%$z1SDk+M&t{zbLrETX`U(=`4*1|?T}czl5E!A#yv~L<Q<aO zykq#m%$D2&6<#dx{}7tK^1FgWA83b;>+bc66c&QYo9)8P4Xd~xak$MJ`f5{<2X16Y z^&^d%;ZH+_1f*-N9}v0`!k1Pyb`yo!);o)Ky91-~g+_Z}uuCPvAb4jT${>d>wwb4H z2z=HCcMYrbsmut29?QSV7a3sS9>+G4Vwm_<&Vlm+$5aLMPb{>T(UI`=yz5wV9#aAo z4|V89*<Dm~U6)Gdx(laX92_E|3+vh0LPQ0y{VLx1Vt_L<<g4mogSVRe6#!2B+p9Vu z^^-lE$Y+!gp7+tOeoFg7w|Q!xQ6s>^w8&?(=+A0Nh)*m(wf)|Ep~&aF{Ete>`F##Q zy?r3?9_X(Uga0RO`@2cP$e;bRjFQ-P=)GsQ@+mGijvw~IA1CYCyy*G;S@?N}E+Oqu zwpAplj1C-nMZI4Qur^XDR2<=Vyt85XJgg%Nx!H%y517k$R|4a=Y%C+A3{<hyR5qk* zN<1;M^Un0o!{;#N#(yP4JOgMkjcVu4@ddsE^X8MkYUOK!S#GtRTglzhQD!RBC2oNl zGnGf;tS6w%3QJ@Q(-h4)U<X+S4I)JHl~pF76H3&skPUG#ZYS)2prC@3Q7&td0MYTx z!`OXO($EWmtsYmF6Q*Ve%pPn9;j&tBR?@{nwnKEHyPjsX#7}M-ulZ9u%uIdJM`R$N za<DD^4p+V^_f`yC%NWK2Z`dU?@1ZYyN=^ms!jQ|t3yQ4Fw)Ul3K}~)=KK#7Nkjk1U zlDgLOa#Ge{_g%|zjLk${aWbAHq!|^nW(H*(U4(CL@!b6b1gFKt<ZyhD!+lL9_-$Kt zG<}YW7@M57Ka{s_h5rE2AmWo$5mpZ{gN85s`1@)>h<s$c;HS!cXc>8kTH2WHPi0NB zP71T$EzF_8O84P`ezA?Z=xjv+1dC;eFKXd@@xR5ruTV*hYSyYpIq}}|tJzF@q*b!< z^c@Jb125u+k-0|$;HJ79ZTkm;aL~AP4bx0S#Y?VBDYd9X3c?=(SKc>B`RVz9uwmF5 zGX(WnHQ#^Ixg*psDr)Su>;p2s$!YN0&haaemyJUDK>Wfr4@tj7NZsu93eX&(WOd=N z`6x{O5!8VtL7x?mbU6mc%o9zcyE{)VX{Eb*F41cgUF9*9b6Y1qAc6M=(O|H|V2(wE zqN9!Z93wA)7F{apEp6U~)O*?woU0qWlXZGjd=$Uf6V^V0c5w}0r3Ij(R2&pxI>?B9 zRU*euy2eOijgd>^K1wF@t1Ggj7fOyU>l2@-qi+hLf_-f1Iv-uLRZ;xeRI|l7U-VP` zh<VBjamh9@Om||#XrsuUhJH*K4hjvh5C$@}_<E4ER_>RxX(^kMPmU!9WPUtDD>+;; zLBQSYGm1}Wu<H!FQmr^#k0YB^&(P~<C^Lf;6tFKL-LTR>RX0^Li+{8`Z%}j1poZU1 zs&ID1VB-{APn>FVq4J(mRN@<)YwoDkp~p*FLfX`%pwZ&sTIV$X(`9}kf6||Bcs{m! znF`K<{e=_uG2P2)8VN25NMq1tO!ak_amzSRl>)9y6AS6fl|#vn6HG?rpy-*n>ZNGU zWbsB;2uwDHSa{)4_{dW!>b7&MZ&yI<*_s?qYfDqL0?>L2H|6El(Z;hD&2AYQ>PR*2 zV7#Jo9cP4tjdUA<%0iodY#xT1fGp3*FaBm|&zs$Tze9yi>mq9oNPuRSgEn{qKDjdr zbIu3poB55;5NPcvHh_jWz;@0P&{^Lz9DR35#)aB=&U3*a*5Vdcbju;}69;+aDc`oh zsL<Vsv_;8U40WED9`C$TTpeqO7Ne1&UT@jo+dY8pN@{4QDf<lD#S1IkE(d?UK``dH zfa6(e0~}5xMO!WdSWCZ{Ebg47evm2}z4k^}5Shi(W=q;cy<xK0nn@zyXfw~}_Ez`v zoamx_0^L;3hI=EakJyr-098ah@jLVDsVtkV*Ybx=cY9GiosDrS6s}#Nui5(_WNn#P z0gtV*IdcJATg3FflVI!a3TNVl3#SZ@gGNbC!AxO~c|EZMV2N&fEXKm-39T#2>(iH0 zpM!JQHR6{ZqaKpF?Yt7$1>Zd3KaGoNSHLenbRTDb2mVGS8o7@;S=yiSJYFQE7Bp_~ zgI7qCq6abUmun$CFpqmO5*3^LKA;|t5GtJd06ioX<z;UXj+z{tQ9nYpXK35N(zFhq z^T>OBfQX9Uff%ZNO-`Tibf%hG0TO5n7^+>TG+yV4s)?Za9+#O()-NhCJeskVtlld5 z^QsRea}>|koS*7Ou8>p3a;kO}TJSY$b$4j52-=E~i6z}hC%(M$ABrzf-q4^fDMVG? z^7%djcB1#Vd6QJ0F4TL~n+?S*P(#c;iNUGn5xt8%@P|KRhQX2UM!ZUH5(pmFvZaff zvu#3eOG=7P==(5-NIAD~5>^#kaoj&K^bySJsE>WcuPEtln)1!^YUD+#f?t{q#?pM$ zDf6&edj6t_9d?FdD&*zH<PmLQH*N0AiN#9+xHkqvaYPeR)4kD)v$o_nOG*x9M2@*) z+|KAsAj`hUniS5Q+Rad>C5N7ZjqG-I*ku-^0)On7ldv>-PT;yrA0OhUH+t5WN;#&4 z)mJ(R2A~|-BmH6d1IH0tlV)*gGFRD&P;#SoaqUdtll%e~{WVXn1Px|?)SI<Ds{HR| zzlv2j!1C{f_aIxzbKEH>;-U_4ZLo#&xVZsvp!TAYPd2v09?UTq!)aL-Fnii&Y!~Ji z7{eva43GRIzN)=rTIGkUU%Pkame!S^9LD4l1;cgGBXaxU)!haK$AeOm93M)PuI!k= z(oO<A8!L4(=Yf$(E>FMR{DeU1go{{}Oq;W9y>+{cgj_vOi)OR#aBO8MK6?f;xr>Mu zP*jlWVBI)Gy(XuEPflkdr_>5!prbx+nbbR*6(;u(+bRJ{6*9aOAE8e`AgB{mfVvSv z)k+7t3sm{RZi11CV>&b~Er$H=U4X>{*!hveOY7g(mfSMe{QC`ZWth*O5q7RO)t>e3 zBm9MW)*$G_d)ZG2_BHR+;lbk}uXtM$n1{GBX?DW2Pgv8k9rfK|FRCp=-I0SSL2&6t z{pvfR_FM;Ig2ZB^?wYLE!xy?BVwEyvyft}_SxY=)H>`hdc|PtIBUjj5zJeUfPK-*2 z!85-4Jx<B(ah+4?f8Oh-&OL!OJKc3Eh2Gum11S%3uh`m^C$z7e+B{9c7IPlJ6Dw!K z5!In54`>uml0t($ox@G@hy8~=eeckouoD1if1{Ec_V_S!<tABrTjLa#?nAMdq&RQL z^FS|p)cbu}DZ+H*WaAWX+C@`zYC`%Uc9-=YV1&6DCixR@1ny^2y_=QRuqt=p@Ml`; z0jg9iI{_N&+iLmP1xe{l_}dOpNH{!WE9%v1DHL3LGhm_c1-JUNs8AgW<e>-S++Jr( zTMdmbNiWNW)=aQSdV&`H@Re9(C5_q9x3xVEgR~oI^e6cPhRY}BE3G_ZVcu$3ocIfm zcc7#=C_4z3<`1IRyK+!Xuk^XMjP|dnu(J-qVjCH3JtDl0E6B&q{B3_=f=$6Mx7kPU zlh<4&*B{f1ZtPQjF|x|CQ+{D;2fEfI`7-f61lotT!S;Pck$%<!QUu}?R3Y+T%jVV! z6)&YsQ8Lr$G)>M%jLHp?1lg@gLK*F|!6y@fQnxJ%6&{TE9s0GrzR5?eGk+>MZp89` z!Z}~XK9siyPE66G^)@d69j49(V%~pDSCJ@p8Y=nO=OI!WpF1n7zUJ6nH6FT`-}<C~ z@OK+JjJYXFLNQg{wosOLH~)4z4pLP**S+{*k=R0<KLEbAtaPq<!7ZOAVB4BAFOLJR z-#F5SljTC<f9O{s(w?-2Fjg#-j!?-S_Zbektvn;gT~ncY7Rbm1EC~$qfFKlG7Jys? z=d#~6Or_>)xaybpL9ymdbbV<_auxR`XJ?D93EqA?t$=JoIL?^{Q~kxVc4%3Fr@gOQ zVoiu+ovoMTU|Mtk+Vx3+XZPbc7jp5JWWQ@5FV>B#@BrGvQVjQ+icY(BtQw|+eX^a4 z;Uw$Ie7LnOr36zjkeX3KpaqR!C1Ah;_RB4l;nj!YZz@eEHe^E$Vzv)8NG}|bNL!Ae z%CU!RNSCt{g`4uKHzz{yjB*R5Ph(i_$T}BIPOP1oj%^S^7wo4@V~U99Ywbf~_xb(L zZZf*x?oTQ^G<rE8Vh3ia?l7s(QJ1=*_e`y{9$SS@2}QXxpx`q?f^&e$;UX=HqSxi( zF!FS!vqho^EX}Cbvjl8Kxe(766vPAz)Rb*eY@s037hzs8uzBvKD=wa+m40Kjz}UvX z-+DibX)N<czdcmsRHF5Zbxp>b?8Z_Z`c35djzX)v($0HarS#vq29{scGC%T604i|E zS7j2umk&*h0t<nq!1Nv(HWX@>&iGF&@3&yQW`vvq^b%mfK2$yYfPT?01|SWSCivuN z?7aQ4+Nh<6c)~F%7I87}=~6-F+K*&xDq8P&n<<G4_(%;3+POu*i?a2VRpz#W5B2uw z+CjExvc=uSy1Qw^IqJvonW0GHZ^Ua3*pnv8OMgr&;4l$wofnQj%>MPrq)#<8uee3r zf?NCsfTVHxM`Df8cLL?FwcDy;@LYr-vkd30pmw*G>?iXv-)+YX9P{Z8mZ19&^Jd%i z3=j(3Wl;I*_n0hZqAn6%!_3I#Fr!NE@H@M~w=pl!9@#n61$%3PqYr6*!A3BgmG}yH zVMUQLFnenQ958r4dWxN}2tbs*tG2qc!}cna>JgCp3~y&_al~d2In}cTOya}`C>ysY zC_s;;z>lRO1aHs}4Ss#);{F32?uR`5c`n(&75`)rzi#2w&jZME5^%7f_8$@7lx*L; zDCt}k{XwG>>j<8+Bk~H5GnaSk7t#HIkXGmk{3aTpKGCe(ALYf$b)#y3Af0T__Kco8 zOwblet~<kZC-O<kblB;Iw>>)fLc^7g)`ec*0oU<oJ$kvg&3AlBx}Tvg;ZyX_aQGKO zPe_Ik{I-=N(Yj0)2g+4?x{4FUQ=kP+TGaF`Ov>~-O4*v`4GcPJZv{MtH0rIxfGi?7 zuthX|N5m|~>)R`hK3oRh&00>f<|J&7pKgI&kcJu?ycfq=hdJprKHYvZd(JO2UA=E| z!{uY-2Amge%PZ%Y%br5unmm#f82t(0wAlPa)2J%x;KV$j1A`%P;uk|>nJzeV%DHBI zT`xf%T^X4TJ3QDlbB!<a=>1>iygFYuHF!(>+JgAzQ|9Oi67Mfw_i+zN@L)#FXfmLw zu%?wLi1>%3a~d?Yz8`kQ{IsDkfXV%`HO=>PImH+2+<bBd#$&B%(@Hy<?+?nqHQ*Y$ z%#J)PFfee2q)jNoMkO%`n7^H(nbM+vaYs7%FIvbj{lyF!p1-&xBmNhOWaW_msSwNm zzmB{l4_OV;e>(Bx|FegR>Hij#|L1)Um4qfwkwgNGoJ1mr^tZ0eC`SMh4Exv242zQF z_dn*Cf6O&V|Cni$43N<OHIx3k*?+draQ>HT8q~i&vgJwt68nagiUPpF!0P|$wPF7+ zVmA6eM3MhX`j0X=-+z&Sn18*c$y5G4WUo8{1P|HY)A$qr?`gJEOX7(CY2^6|0|v(Z zU+b5s|B`JL_#m{t{WBy?8dea1xMuo0Bvr)vyZ!%u0WdI%|5|Rr@|WnO$PS?i_&anE sLrYpzq=RUa{yUuk5GHXe(LsEb{X6wnBL9L7h7INl3kFst_pht}16E#ldH?_b delta 10477 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 T4TlJh2<{Ck99)9(e-Zx=$<pf) diff --git a/devTools/javaSanityCheck/src/element/AngleBracketElement.java b/devTools/javaSanityCheck/src/element/AngleBracketElement.java index e129ee20cf4..4b3f2526a39 100644 --- a/devTools/javaSanityCheck/src/element/AngleBracketElement.java +++ b/devTools/javaSanityCheck/src/element/AngleBracketElement.java @@ -6,374 +6,372 @@ import java.util.Arrays; import java.util.List; public class AngleBracketElement extends Element { - private static final List<String> logicTags = Arrays.asList("if", "elseif", "else", "switch", "case", "default"); - private int state = 0; - /* - 0 - initial: < - TWINE - 1 - << - -1 - <</ - 2 - trying to complete twine tag: <<tag ???>> - -2 - trying to complete twine tag: <</tag>> - 3 - waiting for >> - -3 - expecting > from 3 - 4 - waiting for >> with KnownElement - -4 - expecting > from 4 - 5 - expecting >> - -5 - expecting > - 6 - expecting > with KnownElement opening; comparison? - -6 - expecting > with KnownElement closing + private static final List<String> logicTags = Arrays.asList("if", "elseif", "else", "switch", "case", "default"); + private int state = 0; + /* + 0 - initial: < + TWINE + 1 - << + -1 - <</ + 2 - trying to complete twine tag: <<tag ???>> + -2 - trying to complete twine tag: <</tag>> + 3 - waiting for >> + -3 - expecting > from 3 + 4 - waiting for >> with KnownElement + -4 - expecting > from 4 + 5 - expecting >> + -5 - expecting > + 6 - expecting > with KnownElement opening; comparison? + -6 - expecting > with KnownElement closing - HTML - -9 - </ - 10 - trying to complete HTML tag: <tag ???> + HTML + -9 - </ + 10 - trying to complete HTML tag: <tag ???> -10 - trying to complete HTML tag: </tag> - 11 - waiting for > + 11 - waiting for > -11 - expecting > - 12 - waiting for > with KnownElement - */ + 12 - waiting for > with KnownElement + */ - private TagSearchTree<Tag> tree; + private TagSearchTree<Tag> tree; - public AngleBracketElement(int line, int pos) { - super(line, pos); - } + public AngleBracketElement(int line, int pos) { + super(line, pos); + } - @Override - public int handleChar(char c) throws SyntaxError { - switch (state) { - case 0: - switch (c) { - case '<': - state = 1; - return 1; - case '>': - throw new SyntaxError("Empty Statement?", 2); - case '/': - state = -9; - return 1; - case ' ':// assume comparison - case '=':// " - return 2; - case '3'://a heart: <3 - return 2; - default: - try { - state = 10; - tree = Main.htmlTags; - return handleOpeningHTML(c); - } catch (SyntaxError e) { - state = 1; - throw new SyntaxError("Opening \"<\" missing, found " + c, 1); - } - } - case 1: - if (c == '<') { - throw new SyntaxError("Too many \"<\".", 1); - } else if (c == '>') { - state = 3; - throw new SyntaxError("Empty Statement?", 1); - } else if (c == '/') { - state = -1; - return 1; - } - state = 2; - tree = Main.twineTags; - return handleOpeningTwine(c); - case -1: - if (c == '>') { - throw new SyntaxError("Empty Statement?", 2, true); - } - state = -2; - tree = Main.twineTags; - return handleClosingTwine(c); + @Override + public int handleChar(char c) throws SyntaxError { + switch (state) { + case 0: + switch (c) { + case '<': + state = 1; + return 1; + case '/': + state = -9; + return 1; + case '>':// empty <> + case ' ':// assume comparison + case '=':// " " + case '3':// a heart: <3 + return 2; + default: + try { + state = 10; + tree = Main.htmlTags; + return handleOpeningHTML(c); + } catch (SyntaxError e) { + state = 1; + throw new SyntaxError("Opening \"<\" missing, found " + c, 1); + } + } + case 1: + if (c == '<') { + throw new SyntaxError("Too many \"<\".", 1); + } else if (c == '>') { + state = 3; + throw new SyntaxError("Empty Statement?", 1); + } else if (c == '/') { + state = -1; + return 1; + } + state = 2; + tree = Main.twineTags; + return handleOpeningTwine(c); + case -1: + if (c == '>') { + throw new SyntaxError("Empty Statement?", 2, true); + } + state = -2; + tree = Main.twineTags; + return handleClosingTwine(c); - case 2: - return handleOpeningTwine(c); - case -2: - return handleClosingTwine(c); - case 3: - if (c == '>') { - state = -3; - return 1; - } - break; - case -3: - if (c == '>') { - return 2; - } else if (c == ' ' || c == '=') { // assuming comparison - state = 3; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - } - case 4: - if (c == '>') { - state = -4; - return 1; - } - break; - case -4: - if (c == '>') { - return 3; - } else if (c == ' ' || c == '=') { // assuming comparison - state = 4; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at[" + line + ":" + pos + "]", 2); - } - case 5: - if (c == '>') { - state = -5; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - } - case -5: - if (c == '>') { - return 2; - } - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); - case 6: - if (c == '>') { - return 3; - } else if (c == ' ' || c == '=') { - state = 3; - return 1; - } else { - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); - } - case -6: - if (c == '>') { - return 3; - } - throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); + case 2: + return handleOpeningTwine(c); + case -2: + return handleClosingTwine(c); + case 3: + if (c == '>') { + state = -3; + return 1; + } + break; + case -3: + if (c == '>') { + return 2; + } else if (c == ' ' || c == '=') { // assuming comparison + state = 3; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); + } + case 4: + if (c == '>') { + state = -4; + return 1; + } + break; + case -4: + if (c == '>') { + return 3; + } else if (c == ' ' || c == '=') { // assuming comparison + state = 4; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened tag at[" + line + ":" + pos + "]", 2); + } + case 5: + if (c == '>') { + state = -5; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); + } + case -5: + if (c == '>') { + return 2; + } + throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 2); + case 6: + if (c == '>') { + return 3; + } else if (c == ' ' || c == '=') { + state = 3; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); + } + case -6: + if (c == '>') { + return 3; + } + throw new SyntaxError("Closing \">\" missing, opened tag at [" + line + ":" + pos + "]", 3); - case -9: - if (c == '>') { - throw new SyntaxError("Empty Statement?", 2, true); - } - state = -10; - tree = Main.htmlTags; - return handleClosingHTML(c); - case 10: - return handleOpeningHTML(c); - case -10: - return handleClosingHTML(c); - case 11: - if (c == '>') - return 2; - if (c == '@') //@ inside HTML tags is allowed - return 1; - break; - case -11: - if (c == '>') - return 2; - throw new SyntaxError("Closing \">\" missing [2]", 2); - case 12: - if (c == '>') - return 3; - if (c == '@') //@ inside HTML tags is allowed - return 1; - break; - default: - throw new UnknownStateException(state); - } - return 0; - } + case -9: + if (c == '>') { + throw new SyntaxError("Empty Statement?", 2, true); + } + state = -10; + tree = Main.htmlTags; + return handleClosingHTML(c); + case 10: + return handleOpeningHTML(c); + case -10: + return handleClosingHTML(c); + case 11: + if (c == '>') + return 2; + if (c == '@') //@ inside HTML tags is allowed + return 1; + break; + case -11: + if (c == '>') + return 2; + throw new SyntaxError("Closing \">\" missing [2]", 2); + case 12: + if (c == '>') + return 3; + if (c == '@') //@ inside HTML tags is allowed + return 1; + break; + default: + throw new UnknownStateException(state); + } + return 0; + } - private int handleOpeningHTML(char c) throws SyntaxError { - if (c == ' ') { - state = 11; - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag", 1); - } - if (!tree.getElement().single) { - k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); - state = 12; - return 1; - } - return 1; - } - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag", 2); - } - if (!tree.getElement().single) { - k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); - return 3; - } - return 2; - } + private int handleOpeningHTML(char c) throws SyntaxError { + if (c == ' ') { + state = 11; + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag", 1); + } + if (!tree.getElement().single) { + k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); + state = 12; + return 1; + } + return 1; + } + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag", 2); + } + if (!tree.getElement().single) { + k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); + return 3; + } + return 2; + } - tree = tree.getBranch(c); - if (tree == null) { - state = 11; - throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); - } + tree = tree.getBranch(c); + if (tree == null) { + state = 11; + throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); + } - return 1; - } + return 1; + } - private int handleClosingHTML(char c) throws SyntaxError { - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown HTML tag: " + tree.getPath(), 2); - } - if (tree.getElement().single) { - throw new SyntaxError("Single HTML tag used as closing Tag: " + tree.getElement().tag, 2); - } - k = new KnownHtmlElement(line, pos, false, tree.getElement().tag); - return 3; - } + private int handleClosingHTML(char c) throws SyntaxError { + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag: " + tree.getPath(), 2); + } + if (tree.getElement().single) { + throw new SyntaxError("Single HTML tag used as closing Tag: " + tree.getElement().tag, 2); + } + k = new KnownHtmlElement(line, pos, false, tree.getElement().tag); + return 3; + } - tree = tree.getBranch(c); - if (tree == null) { - state = -11; - throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); - } + tree = tree.getBranch(c); + if (tree == null) { + state = -11; + throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); + } - return 1; - } + return 1; + } - private int handleOpeningTwine(char c) throws SyntaxError { - if (c == ' ') { - state = 3; - if (tree.getElement() == null) { - //assuming not listed means widget until better solution - return 1; - } - if (!tree.getElement().single) { - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, false); - } else { - k = new KnownTwineElement(line, pos, true, tree.getElement().tag); - } - state = 4; - return 1; - } - return 1; - } - if (c == '>') { - state = -5; - if (tree.getElement() == null) { - //assuming not listed means widget until better solution - return 1; - } - if (!tree.getElement().single) { - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, false); - } else { - k = new KnownTwineElement(line, pos, true, tree.getElement().tag); - } - state = 6; - return 1; - } - return 2; - } + private int handleOpeningTwine(char c) throws SyntaxError { + if (c == ' ') { + state = 3; + if (tree.getElement() == null) { + //assuming not listed means widget until better solution + return 1; + } + if (!tree.getElement().single) { + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, false); + } else { + k = new KnownTwineElement(line, pos, true, tree.getElement().tag); + } + state = 4; + return 1; + } + return 1; + } + if (c == '>') { + state = -5; + if (tree.getElement() == null) { + //assuming not listed means widget until better solution + return 1; + } + if (!tree.getElement().single) { + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, false); + } else { + k = new KnownTwineElement(line, pos, true, tree.getElement().tag); + } + state = 6; + return 1; + } + return 2; + } - tree = tree.getBranch(c); - if (tree == null) { - //assuming not listed means widget until better solution - state = 3; - } + tree = tree.getBranch(c); + if (tree == null) { + //assuming not listed means widget until better solution + state = 3; + } - return 1; - } + return 1; + } - private int handleClosingTwine(char c) throws SyntaxError { - if (c == '>') { - if (tree.getElement() == null) { - throw new SyntaxError("Unknown Twine tag: " + tree.getPath(), 2); - } - if (tree.getElement().single) { - throw new SyntaxError("Single Twine tag used as closing Tag: " + tree.getElement().tag, 2); - } - if (logicTags.contains(tree.getElement().tag)) { - k = new KnownLogicElement(line, pos, tree.getElement().tag, true); - } else { - k = new KnownTwineElement(line, pos, false, tree.getElement().tag); - } - state = -6; - return 1; - } + private int handleClosingTwine(char c) throws SyntaxError { + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown Twine tag: " + tree.getPath(), 2); + } + if (tree.getElement().single) { + throw new SyntaxError("Single Twine tag used as closing Tag: " + tree.getElement().tag, 2); + } + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, true); + } else { + k = new KnownTwineElement(line, pos, false, tree.getElement().tag); + } + state = -6; + return 1; + } - tree = tree.getBranch(c); - if (tree == null) { - state = 3; - throw new SyntaxError("Unknown Twine closing tag or closing \">>\" missing, found " + c, 1); - } + tree = tree.getBranch(c); + if (tree == null) { + state = 3; + throw new SyntaxError("Unknown Twine closing tag or closing \">>\" missing, found " + c, 1); + } - return 1; - } + return 1; + } - @Override - public String getShortDescription() { - StringBuilder builder = new StringBuilder(); - builder.append('[').append(line).append(":").append(pos).append("] "); - switch (state) { - case 0: - builder.append("<"); - break; - //TWINE - case 1: - builder.append("<<"); - break; - case -1: - builder.append("<</"); - break; - case 2: - builder.append("<<").append(tree.getPath()); - break; - case -2: - builder.append("<</").append(tree.getPath()); - break; - case 3: - builder.append("<<???"); - break; - case -3: - builder.append("<<???>"); - break; - case 4: - builder.append("<<").append(tree.getPath()).append(" ???"); - break; - case -4: - builder.append("<<").append(tree.getPath()).append(" ???>"); - break; - case 5: - builder.append("<<???"); - break; - case -5: - builder.append("<<").append(tree == null ? "???" : tree.getPath()).append(">"); - break; - case 6: - builder.append("<<").append(tree.getPath()).append(" ???>"); - break; - case -6: - builder.append("<</").append(tree.getPath()).append(">"); - break; - //HTML - case -9: - builder.append("</"); - break; - case 10: - builder.append("<").append(tree.getPath()); - break; - case -10: - builder.append("</").append(tree.getPath()); - break; - case 11: - builder.append("<?").append(tree == null ? "???" : tree.getPath()); - break; - case -11: - builder.append("</").append(tree == null ? "???" : tree.getPath()); - break; - case 12: - builder.append("<").append(tree.getPath()).append(" ???"); - default: - throw new UnknownStateException(state); - } - return builder.toString(); - } + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append('[').append(line).append(":").append(pos).append("] "); + switch (state) { + case 0: + builder.append("<"); + break; + //TWINE + case 1: + builder.append("<<"); + break; + case -1: + builder.append("<</"); + break; + case 2: + builder.append("<<").append(tree.getPath()); + break; + case -2: + builder.append("<</").append(tree.getPath()); + break; + case 3: + builder.append("<<???"); + break; + case -3: + builder.append("<<???>"); + break; + case 4: + builder.append("<<").append(tree.getPath()).append(" ???"); + break; + case -4: + builder.append("<<").append(tree.getPath()).append(" ???>"); + break; + case 5: + builder.append("<<???"); + break; + case -5: + builder.append("<<").append(tree == null ? "???" : tree.getPath()).append(">"); + break; + case 6: + builder.append("<<").append(tree.getPath()).append(" ???>"); + break; + case -6: + builder.append("<</").append(tree.getPath()).append(">"); + break; + //HTML + case -9: + builder.append("</"); + break; + case 10: + builder.append("<").append(tree.getPath()); + break; + case -10: + builder.append("</").append(tree.getPath()); + break; + case 11: + builder.append("<?").append(tree == null ? "???" : tree.getPath()); + break; + case -11: + builder.append("</").append(tree == null ? "???" : tree.getPath()); + break; + case 12: + builder.append("<").append(tree.getPath()).append(" ???"); + default: + throw new UnknownStateException(state); + } + return builder.toString(); + } } diff --git a/devTools/javaSanityCheck/src/element/CommentElement.java b/devTools/javaSanityCheck/src/element/CommentElement.java index 0ae0908201c..a1c80c70042 100644 --- a/devTools/javaSanityCheck/src/element/CommentElement.java +++ b/devTools/javaSanityCheck/src/element/CommentElement.java @@ -4,67 +4,69 @@ import org.arkerthan.sanityCheck.SyntaxError; import org.arkerthan.sanityCheck.UnknownStateException; public class CommentElement extends Element { - private int state = 0; - /* - 0 - / - 1 - /*??? - 2 - /*???* - 3 - /%??? - 4 - /%???% - */ + private int state = 0; + /* + 0 - / + 1 - /*??? + 2 - /*???* + 3 - /%??? + 4 - /%???% + */ - /** - * @param line line in which comment starts - * @param pos position in line where comment starts - */ - public CommentElement(int line, int pos) { - super(line, pos); - } + /** + * @param line line in which comment starts + * @param pos position in line where comment starts + */ + public CommentElement(int line, int pos) { + super(line, pos); + } - @Override - public int handleChar(char c) throws SyntaxError { - switch (state) { - case 0: - if (c == '*') { - state = 1; - } else if (c == '%') { - state = 3; - } else if (c == '>') { - throw new SyntaxError("XHTML style closure", 4, true); - } else { - return 4; - } - break; - case 1: - if (c == '*') { - state = 2; - } - break; - case 2: - if (c == '/') { - return 2; - } - state = 1; - break; - case 3: - if (c == '%') { - state = 4; - } - break; - case 4: - if (c == '/') { - return 2; - } - state = 3; - break; - default: - throw new UnknownStateException(state); - } - return 1; - } + @Override + public int handleChar(char c) throws SyntaxError { + switch (state) { + case 0: + if (c == '*') { + state = 1; + } else if (c == '%') { + state = 3; + } else if (c == '>') { + throw new SyntaxError("XHTML style closure", 4, true); + } else { + return 4; + } + break; + case 1: + if (c == '*') { + state = 2; + } + break; + case 2: + if (c == '/') { + return 2; + } else if (c == '*'){ + return 1; + } + state = 1; + break; + case 3: + if (c == '%') { + state = 4; + } + break; + case 4: + if (c == '/') { + return 2; + } + state = 3; + break; + default: + throw new UnknownStateException(state); + } + return 1; + } - @Override - public String getShortDescription() { - return null; - } + @Override + public String getShortDescription() { + return null; + } } -- GitLab