From c423da8abc9823ad95272948a3189711973138e0 Mon Sep 17 00:00:00 2001 From: xiongchao Date: Sat, 2 Oct 2021 13:29:27 +0800 Subject: [PATCH 1/2] feature: support import grammar --- out/artifacts/jsgfkit_jar/jsgfkit_jar.jar | Bin 0 -> 27376 bytes .../l5/expandingdev/jsgf/AlternativeSet.class | Bin 0 -> 2791 bytes .../ca/l5/expandingdev/jsgf/Expansion.class | Bin 0 -> 224 bytes .../jsgf/Grammar$UnparsedSection.class | Bin 0 -> 1051 bytes .../ca/l5/expandingdev/jsgf/Grammar.class | Bin 0 -> 18880 bytes .../l5/expandingdev/jsgf/GrammarGroup.class | Bin 0 -> 8348 bytes .../l5/expandingdev/jsgf/GrammarHeader.class | Bin 0 -> 1319 bytes .../main/ca/l5/expandingdev/jsgf/Import.class | Bin 0 -> 737 bytes .../ca/l5/expandingdev/jsgf/KleeneStar.class | Bin 0 -> 1262 bytes .../ca/l5/expandingdev/jsgf/MatchInfo.class | Bin 0 -> 811 bytes .../expandingdev/jsgf/OptionalGrouping.class | Bin 0 -> 1499 bytes .../l5/expandingdev/jsgf/PlusOperator.class | Bin 0 -> 1261 bytes .../expandingdev/jsgf/RequiredGrouping.class | Bin 0 -> 1504 bytes .../main/ca/l5/expandingdev/jsgf/Rule.class | Bin 0 -> 1780 bytes .../l5/expandingdev/jsgf/RuleReference.class | Bin 0 -> 1053 bytes .../ca/l5/expandingdev/jsgf/Sequence.class | Bin 0 -> 4065 bytes .../main/ca/l5/expandingdev/jsgf/Tag.class | Bin 0 -> 3155 bytes .../main/ca/l5/expandingdev/jsgf/Token.class | Bin 0 -> 832 bytes out/test/main/GrammarCompileTest.class | Bin 0 -> 3952 bytes .../java/ca/l5/expandingdev/jsgf/Grammar.java | 6 +- .../ca/l5/expandingdev/jsgf/GrammarGroup.java | 256 ++++++++++++++++++ .../java/ca/l5/expandingdev/jsgf/Import.java | 4 + src/main/test/GrammarCompileTest.java | 38 +++ 23 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 out/artifacts/jsgfkit_jar/jsgfkit_jar.jar create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/AlternativeSet.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Expansion.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Grammar.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/GrammarGroup.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/GrammarHeader.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Import.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Rule.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/RuleReference.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Sequence.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Tag.class create mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Token.class create mode 100644 out/test/main/GrammarCompileTest.class create mode 100644 src/main/java/ca/l5/expandingdev/jsgf/GrammarGroup.java diff --git a/out/artifacts/jsgfkit_jar/jsgfkit_jar.jar b/out/artifacts/jsgfkit_jar/jsgfkit_jar.jar new file mode 100644 index 0000000000000000000000000000000000000000..052a59b2ec330a9d52efb4ffc49a5668c28f6a7d GIT binary patch literal 27376 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 D{4H020q;;Q>69anVGY_a*Zt zGxK^so&Z)D+i-1o1SghF*i@;C33ER2$7nM{5!w=4cnbuCK zwXnT#5X aKp5!FfMM!(n1JRG)|Yli?HK7hfb#)LemBkl literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class b/out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class new file mode 100644 index 0000000000000000000000000000000000000000..2a9473b1976f7ccfc51cf08005fac2651343ef28 GIT binary patch literal 1051 zcmbVKYikoh6g{(>W*^-?Oj}c*X=~LaO}Z$Gphc*`iV*ZeY(c+GvSYGgvm0hNr9a9K z3fh8#KfoU)-bprAk`z=z=I-3bx#ylcKYo7w4&VW*HY^k@nAk9|X+uZB#FnzR)Uj>g zj)A)diVT@VoFojndY2z_H{fC0Z6wkU+fNv>dw%FAPZ`#V)8Wz)71tt9Ff7&mP`n!S znnJ$e&44_)deq{<5tqKYr_M~$@ngz94EtQh!fS|D;zuEa^D+#DtOY!d1tr|8w}{C@ zSDf^D=n)l99J}4P{oZ{cd9TOi_5=b^HR3Ut)fUNU0*2LMX_`2LnMC7^`3{e39Y64- zAR>CP^p0VLeB%!1F}o2BWJ?_QYCb1rva3{cuz-?-c{mLDNg1CF2wX^p^QiBbpsU!_aBEQ#PeRSn_ZfpVe=x8=Ss_Xs5T8rtIP6!UxXe*b=GdDR7=Mor3)9e zNF~7rJv$2wHvO4Wg`VUbeJx;-&Lz4XK%*aEm(Re;J71uEqML?gIv44ELa!jBS7GV9 zxJ16oqip1`MmMS>k26HiV?D*(ryNGH{5R-t&ydN@og!QQ42{ewjE@u=HOQ(o{r(VG zflx^b%+xOa5AM-SxU0C9!d1wsR+|1{g2>(e|JEqONrdmUXSP{J-bEHv)cX=ekMp92YI+c@93+O*Z4@H0ddJ@_hMS;NXRBisMCYKAq2S@M1S5us@EM zaEXIU-PD-_ZVX%MraUf_)-w54?&LG&ce#Tr99-$99$e<&DmV3#-=Ld%%Wt)t()cVH z7mDK=u9ZifgI75CYzMD&(_jt>wpC6(N3fqOBUejzxtj(Ffb-mxYhXR!!529ALKh9= ziv-LXnQ*a;og+x*IC-t~Tp~S}O3!7|y4=ZENcWWj?n?OKJn5 zS%I>^N~WY~XZlz8b1VE+Wx2C!L*-RvqnP3+2CHgn{Z+N|{1tTpCTo?y5n6DWPCpwV{nFbkrHM0%z5ghXSQ7W~9ahKgTcn%~1UQF~>CX7}WY9kJ#cEUja*k z-j}Zk%npbhxGO|mv`~+RLJugYS{f8$f~~D^`jRtY!}wsS37o~$FD9L{v2c^A3C(E5 zAYuKc*e3?-szmMu09RR_hXpOif(FEdIkh4Xs0z%k^@l)!wKP}-J>dD6Rt+i##hf;y zqON9obs*%g4a!8uEZf<^P$_VA=|E9IpM0GWtSL8~l}nRrke<@o;#O5htZqab?T+nN zn%OJPB_7KuSzhR`*4FFbcM(*Ln2GS{;P-Siyw^c*A|S$<>d1H=Q&nuSH)}`-i)&|v z$4aMZsx@LUu&53kM|+dcfNWfWl_ddfHcY)*44DPdmsbWRMZSU+POull7j1}Z{u!4-3Dx|SNb>PLj>QL6&wxCHPOnA+4 zCpNTZ2|;)3s+oqyL~KTe0c|2ExMc~f#LUik8m_qj#x5ET3R|dRq!$w$wSmfNpawTe z>O$~%wGkWD)(mzZyAC(6Ky>(o4iLuHtCn+-u`$hW%erHmdu;seqQy10${$)4@d1!l zzqTkxbr7ABssd+&@1bBx0BK6;oWM%($X-`%G!mkmKN)VU6r!jJRKPa|N}~&ee_1Nu zrUlCU6)k$*x>x)d0J=?K!1=@T)cTu)E%Ichinf#hL)rel|W>S6fqF3V$t$8_ZkJgxCgg-!{l>8NJaPr$NmQ_(LVj#Pd`k;WXNDwURwV-r^&Y(m4fE zofi5#J{0n=GV{hx<=UnY@{0n2(g0-a>uBV$@fI5_?4%&?sLKPz$$A}{jGB`}!O94) z2AEQBnfZ30q3p+^12rZ7>Og6s&Jo>b)dit~#*0h8%t4TXW<}IY7=h>s#G=jBl7VAk z&g$lHr+H;SK(f~^18+;mu`M6EqSqQVgI4Q3zC%2*GV>@5?bU)aWN!g|3k8F<(N7WO zF&$`2=0;p~Yv#s6W&!{zoA3-ma~t~sBT|X_!m+}eM)gR;jY=64u^lBxnUUjTdR1^@ zuu^6StmyO_Y`mBfN`jTuA9>&9H;6^l%YtRd=-z?9+bI%6x630Pu{(d2h+e~qQ*m;X$xFov!jptE)UgHgNJUT21v0qu+(2yQR|_bX(Ll=EZEu! zdH4e!>)<^e{*XVy9x~S8XbuaCc`ve74}UBZVp1;rk8ZR){0Wcs@Fe=)!~6JC58X%i zd-yZ{oQXXAcm9H@N3+{$n<-+;6N{|2k>V&r+lDx%p0S|n$UG?4*VdV!hri?k4}Zm9 zBX{@kH~g)K|H1z}3M*T9tbVa@G;e%h^|1y;vN;d`i%~k@G!Orq_j~v|QKTDwI{iosE=>zT+tW~bFzO1~X-n#A(@M)r)2f2CX-mtiO4G)sl_LU_ zmLqgjtV;7QMV@iCA3M^%X*xCZr7;Bzn4{B5B1N&Z(f|M;m-=(~ngFSb{TUvQawsRt zE`K6Z`0xdz#*7}DnYD1i!bRyBtIs_zZIMU0_;>JUp+mVnDo%OO?uUPaJt`h@L%Y9+ zyAeb(FnwYFtRa~T7FMlZ7+Sq>#iESW=?ijm7q#v~^h+N%x^KV18Kct2$qzzq+PQhz z5VNz)h@Rk!v$}3cMR`dYB;zofz&Qqcn9-{t*&&=O0!;8ASv?7(%XJ}6k2aegK3UYq z@SCk;wMTWLI~*#}qdKc3q*jwon>cC4oPy~^zBG^O0?(+rdQ>vq<54N16>1dL-A#2z zH7XYWjK~E7G14oVH%2C=BKNImp$=MHOID?c#6$sW?4se&m&`pv#6^Y)j?K>pl?B%0Ir!4+Q^SO<87jB z8KRR#9byOE=rF`;Yfbq%2$3j)79dpx@bMKD$Ro{MQS)MAutGLnNYO_L@k#BlVWmzZ zjhC%)N~@G1!Z)CDEc4eC=?xyR0gx4Dj*PB#_7yFDbq5+90%42>pQDv+TTOLEIc9cL zA<5{VAOjsQslYA;C~J)kW++e@T!CdS-!K_Ao*A zG~n31b`7V2>|sjp2$Uwk7;VC|ECIM)^)wFPdYRx-TZ4;57LaMOEPVi?w*jKJ38K&c z210!T5NY*v5vWKr*xUC>Lc#^U0!@G6%@S!1VA@RseU418!@%J5I-aFL4HPH8U`wLc z8RbFKOXf>G_3MZm^3`ChJ>1j~R;Pl9!S(C{5rciUh~({-e22&_-RG1EnwAHo1zLPA zuS@80XL{WRJ#pSR6TjE%HYvj|D08iKaJcCi^Lstbz`MN2Dm`A02{}hvdX)*jcyD|o zWh8ZjmNii4RO2nPk+OCz9vg0Y(`%RM#scDnIoS+D>YSRr%UXJ;r~pCgRuHmbO$Wy?KLG^SWm@&v_v*eo!-cmJ_?G1EUGrHAUyM`Eii0E_!xvcphglujq2bqf4dA!XBP zltTd;f*HAV5gi9OBLHa_ZJ>O*o{onT9|^~O0zF7R+JTvWqw(|^O{6dAB>E>!q95pF zIz*G%P6gbZrf@%+#sjI4vvETskEZiDn!yD$lNZn|4$vH4Msqnx^SF*q<(udJt@LiIGQQM+ladX+9w zZ`0-KW4c0pM^~!fXq`GhS6i6YTO4$a#ZA{*deL>3zI44MgKn^7(?-h)bdzNw)msYa zR?9NF%~D63EEm%j%cXR?Wdq$|xr^?y+(UO;9;PrN**%u+bf4vEy5I65Jz#l-9%i-%a!~y+Sr{`4;*sy-IfQw!&BuxDpw+ z6*yjl*4en-55z)6gvw?T`Q-hpK-CAZ1F zcfmb_Q}2SK27k~pxgsrtEANuiTJUwF(EAe{^uYmQb(jV@=tK1XK?Bq{{P!?*chE-;+IyIC9rQ82c>bXDKS-%2n6b-2 zpXlCwj4uxQ6i>AF5^67i{+Thuc8HSEdE5a~9@p>W#&6>9G!U@+I_PumbclLk-XU_D zgMO#p_}0lme{cTQBl^u_W^-SFsbA7pcuLN;2JE!rH!(8{nMP4&PIe;=eW1wlfUq7p zS3KO1MdxQpdfW?O?2G7q841rTIzbu^RkVXqqQ(~VD*BqfK?^V=!bIy^sF^@aq<^5L zG&AkQh2Wp2=br{WELfZvH#a*;9D0$E)iuW=iI3HiZ}VE)2Ks){K%XF~QFC0dueBk9 z?oGDk?Ak&OYnZH96qHCWrk_UgI>>$lDdwB7$hY7r-=+!Bs7WAhGVRfen~V`7K(uJN zL&%CQX|7(dENQN}BnK5~O|<~x1g-g2z#T{b0>f-tQzeBpzD4w@KiNbd99kd#?V$Y* z+85P@fe^U+M3hYEJNn+>4_$4_D<|^_GGb(5wwVm{L__BSc@QJmHng5>Igf;!zTihd zr6I%=P(t((r9#&R(Z`4$`;gIos@Ix^F{u;>4mREeX>30l0pJB>mX<{f0gZs8|P_&w=(Dx)_)d9ki~BHW)JxL}wn1&OCsx;t$Ix z?vQ9N+?-E4twYWO+EF!88rijP+Y7XYi~ESE2~i2d@xIsaaoYF6PaYyVKn^%ZS4Y#l zrtdlog+q1PP&nJGAld`P`=_ZF(=21S$j}6zRXl~xzCV|iseeA(OZ1l4CK^ajU>|d* z*VaNO#x~NpdK#IvlLi&%Y@-v6ZJD7j<3&v;_#F5+tXSMk{x+Iu46uv|(`m-2lcErE z1;V735KcZigp{ltV|13+7KPh1I{FrFIt~QKMMhc2cx^@Drd}=kvZh8EkuUp@q;5VZ z`&?}~!r|5&;hU1}^}HzAQBONe-rQjD#qD*At(<~YH9+ShFR;)uugmLfq{)K9=r1sq zhaC-gxAwedRaix}hL zxR@@}U)^d1bu-dtd-H3^61T%gO5UqIw8kJF+Q5KZ)P!~r&QUz{ zUF2;-1)bBqt=MZ=n%uEu3oILYH~na5(TFn<&Nb9`YXbSW&29 zT8)VrTWH=|OH*nCP0!Xr1CFJ6aQ1eZTZqRzd7N4ZaJ`DHPt(9+3*Jwgy^V?u9~1!! znsp7eFx7fHC3s!Q35_%#MZP4#v>7Rj+vr&vkED0Z(Fqk7XDs8m)J^2=fVyyGfvso` zQ>tL^lr8lRU9l7&9cdpqzomzQUJrrjE{4{wr9{4jlK4{OPM6`2JT9k^dKeM3H_+vLEnUyo(cOFlJ*2K;=v}@Ap6XWG z$G6cJyb0cEGh5+PJbWiS(_P$)@8@$kAXP(6e@iT}lV zDzwF8hrstoES~>jT6`klCnDEU;6Xii);rh~zLApv*$RGK%U#fFk#%Vp+NL!Ov1tQ_ zWZYuY3#d~Q3JOLdrHxh05LVrUq%XlRQ88iNYnZu%yXyZX!-XN)@^RcjD(-ZE5`HIJ z>VV(j0TN-ef0OI*}}C9dkg5-0!9miTnDB`#>T#5G4( z@QBg4!*n+6W6>6xX;|Wv4s^Yh5%y?pgbR+{2p6?A!U;#G@&A(%UfjwE8?kjGejY~n z0#xWlDBw#l!k3|RuRv-43L|_Ks{I<2`fpI@*I|TjzzE-j5xxZ@d>cmi4vg?U7~vk6 z!Ur(I4`GBK!3g)l2tS4qegY%hN5Ar?NDn?kdhjKT@GAtbuMw=i;X(X5XX6&m@wk99 zg}+B&{{d;ikGRhJ6R*MDmP>HkR4%}Y3laJ`oY#88!Q3D(mHNd>6 z0cJ!EuqLXm z!EZ!IcU6fYB?3VmA1em>pK$8ni@WGVRJ@~ z-3Uxgp?Ia@P*e0EKE_iQl|VgllO`3}VIS3*`Y9Y~sxEYj>Pk~pGR;;gG+%W?ExbGG z;9k_fd(uS;HENYgH>%!rt4gEIsxRHE`qP7I0BuzR=_xgc{)(#YYbu>yR~huF%A)-$ zn+~fS+`}2d7M08W)KDI%^7te*oC}aM&s6z5TOE&_dL(jZA77xx@D=JrUauxkt*|OtrV_-LtpU zAWYEF;RYCMq(6$1`=V*Z*TvDe>5}VSM%=WWgKsz(R=XoMn$!)+D>lEWnXsrkR4?cr zs+x&|qxKY)LDId$nJ5BqnSq|qh>2bds2@l-2N;`j6NS&IaXbkU%Z*|l zJc;hQJK0uGOOd+Tx6_&W(-^EB%xDQF8HG2!Mgg;v;)=b_ZM5767vnZ!u~ZzwP4ipM ziLA~fq1>v&^+XT9GnW+)Fgo8>h=$`QA9${NT)3+8!NmeKX9obFO* z(mkpY?yZX6P(gZERnz-lAM4Zn@D!F%dD{tTsqf2bRHzq*lsP#gItbrb)hZpNj~dR&FPO{J(!s;}CtGSwC} zMBT22sykJ_x=T$~_o~29LxrFR^^VmYXb&yBy-fk=qOZzwY#pRE=@Q?!7&w%H?UpV z51(u})b8R?Bb{)zQfrXy$rSt^Ky^)55cVe>q^Ui#vvUqmPdO}U2PfqSpzDe<4#Q@` zv#SHB3mf~G9B>ymVGVzbGCMAm0eQd7X_?z8D0}Z}d9>V$8R%@MLiFByg+H{B`wiR1G33kMQMB-_=!tgkbnd|^x)d{P+jnm@{Jq@ z8Q+jqa&sJUq0BZ6-;nmHml292?OV8$mZJQ5*0ju|khb8$?4%kw9?OwJ_b&0G_GEjq z?GE;Mt;zO0<0LF!ev)eCAgxL_>vZbX4V~!9@;S4-PHP@+Lxt&0^sUfei_kjTNWf(F zNQ1up#RPWG4^&SPp7L7 z;L|>&73w2gMc9k$1|P$peS)-YA3d%i&Vw${;Lk~38o z-HPL;pP^N592iBuz90SiP2?*NMp1DDW;kgm9l~l+@Z^!GBD~JWi{|1l@-`65&Os_TK-nlR zOmOh%{={mqjFW`80Il0#!fUi-{a{ zW<`!VuPBO4&S|78W!_cI^TJK##R+mx)WJ{0IxmFrN6u5XnCGcZx)}~Xa-Q0a ztcNL2GjZ<$I_{8oL}`F!_}dJFWw^{Er@*+e3A?>oT$6ES(k`7A)_9HUkv0lf2P=+cn@fzDZ8HjW#?3SS`+{EiOvMJ(6@w9A#SKDaVqa zSD1z|sR)G;eol_kI9Z!QoAc>DvRP-GIh@h~ADl7xkOV$-(b(GYK}%HlfIpfrAx;Gs zgtJ{lLwC{@#aY|v+Kw5Vf-|pfEdY0k65oZ#X=Pv>jT8VJ{C*3018`e;_vk?0MzEU# z>ZW!G#L*T=@0dWQ0Z1VinM-WeJQ!tIR6r1rP-&_?bxDS>u-Of}8!on1 zt+$?DwAzaXZNY1*wFNCrL=@3_>9O{-r?$4G*4kRNty*oXEg+Ed{{PHg5?J9prw)_F&cqMo%O^|l6rL`@Gx(vr{FjMmEeynu0(edm{@BESTd0uCe_~-MekwQrN1pka ziRUehz|SR@U&zY~CVpvQ6nX;qmAwC2UJhCa;y3cZi}LbY6E9hqh##2vorM~Cf7wEv zy#L-pJ^orsbF?8oqrutQ9!<3H zMT@h!VMDrgUBe<*$n3df>7Nrz#4>XQ^hq@r3K$EMEo44mSuEi!?`T`=q*h1Q#`z|+ zEZH25Ul>irey_lk?BDqF#44A0wrzH zO!Imty{bbhz4+83P6C@ky%5Nnj}w@b;#gHw2Psjy$l2QLv}a<;guuuG=BqjqnOK{1 zPIi~10m*WCv`wLVf>4UgIO&W)X=5hZypaK*KxgI%tUe99iaB5DS)iB~EYe23EjC?X zY*7=>m)I^ztV>dP-z;mUsw)SKylgpcOFCkVr>ztI6XqMrl zVC`p|o^sX+Of1S@211Sp<&-B?*hb?jTggnIw&>v%{b=R+l(VTLmU5Wk%=S~9U)7J6 z=k-jKA}foETpevCm95H|^xx_>*2v<)n)eUGF-m6__x1dE#!0cR#x^^RjtbMbEOshl zh<{$9BSrd?Yd1K}bYZ9<@>i&L(u%aRNnlJ-D;jCIbQ(#^@=|1a&^F~pr^U+;Yh&DT z5)RWp#cElUqL0@HKQ+@Pxfg6hZzzgrZXfc+GEN(FrOd54Qd4)s%D)h(E^4)FDa-I1oOxL88+hU+(GQJqO1UpxcZ4r{ky6`O<_u@VVQr>9Sg9|!h z@fPXaN|uXwOLZcdsg}W3og$y=wcDx_oGc>MwiqM^+oHl%Vu&qY@)N*RjdiqRF; zL0eQw_+qpUDjxj99~(HI#=V{I`` zjOX-FjK7y_wwQpge}GwqDaj6=k1@BO^?Btg!`hJ7&rN_({>2hDQn#fTGW^(t@_Xu= zMsM$6qnkD9#MXJ@8*heElX$MbPA@#_sxix5q@A!Pu`euK&kQSw zwDFUQ3(AqPqy|_-JrsuUNFISKI;1hzN7Kult<;I%UGnoHp&kZj>H8WztYCh1ZEoZQ zqP{Wup6~$Skisz|8fPW1C^XqaQ3{leZ?%$1XB3N~yj2C>$%4*rGo9aavW2)k)a?}h zXnVVp;OqKA$=O3E@bSu+ge{YFsro6MJu1IW)3Hk#RD_J54t@%sACC)!Jwd92EKJ7Z zE;h5JnV}Q>NK8UmlnXyie9du34q5@v8q!%@x{1n%(%ge0=`)QohzWcwudEWAGD?(=--F&fTCW-YZ)nk01WoQPNQZ0J2GjrjDL{;+Q^*zhA}*xZW&0-YEmSLFf+FfbAb2f7go4eG|=?eJgi7hSyv zEBs+&|4x`j7o>@xn$ol}bOiVVR{$evR3*Zw!Yuxxbq=brn7d0cR++kr6tigjI<%@2 zO*sRbat1ajAfz*zJOcv^iS>w4)(|Yj25h8ZVa!7uZ8SVVO6hoaFUdU#$OQO$rCKK1 zO>8oeGLbgH$-hIG*bIz60&R^YO?q%2Dj07=BEHFwV`wL4PCkI4 z5r5d{!%I@O`k-Sm%S#Ctc!_F&v&wPA9j zQz>3Lm7Mm1UAGgXT*W4b2IaI0`{eEfsULh1vrB)LN>1#=3Mx4UNZbc_%>S9;y(X$km(~q(<)w95xGbO6gDMR7QC5ikm&`P}dVd@?B?C83N+m=e z5*+hG6-NDjqvb9c4>WCQg)-ob9k4tSdHaCS%X(L=CL&Wiv5SaIjrjGMUJ4aPYK6HS zUo4P!g&S)#JTzFCJT!vFOtY)^dHF02R^hL}Z1BL8b&PoSHCR0s8tjt{q`@b8w5zwH zi)s8gW_DsbRi3F-E~4Oviz=w9M4^fQHkGMh*teVYZzW#FD=he`B8xw;ssWSuT*G=> z%j#H%@tDkOJu7DeoA6Yg_z-LD8EiH)*g8IpcGl(&{@DLnL~t!Wf-hh$?j!Xs{x#tH zyg$sg{3OoC3#{uevys2Tzb3p&PH(fmzsF{Nn9aNw%Y=dDVjvpXfL4ndd{i{>J_~Ea z0(?v?Mw3{Bi$oL`i!?qVF2g6qb+|-)2~lw)){2{XzYWde9<+#u_$~beTE%l%FMfuY zco!QqpiK)Qp$$h;t3*nhh_rSlGTK6PXy;;!wgg+XMr_lXaH+NypVAzBTDu&VY1iU2 z+D*7zyB}9*yKtrUAgNWJ1#Z%-@D+VD zzNU}E&H5DFqR+ss`dPS5zX0FRFTxJp!A^Z6Zr2mIQ@;Xt>DSc#&`9fV3+!d_!E_8AlKh|z#Yjp=yIn2!U- zQaoW?fTxURJZ*dy&lor0hsF*(Yute!8N2XP*-=G?UajLWv5ljENiWypQhbVitexvm zqlx~%7+0%~YSPbF;xfJq(32DJ8TQd2W8iDJ99Qtfd+e=O()WJ)?+mqT(pxid70>(W zGxvl^PtCwJj1NEkA!#CCieLN5v){mgGIdW#8>cD4sZ$Vr2b!r zNvspNnI{57suH(Qnnhf1WG7_RCc4+Vbi~!8lYKrreQ@Otck)Q<*nC1(x}nOxmQ z4LE2T_u?Cr;ZrlmIu4yKj!6VP%#tuYq~yxQhbs>s(s_0#VS6@m*V8>o-Cgat@?>SF znddO=DCTi^VSFwy@l7?)Y#MtQGx*eU1VTH8NhWrX;xG%@`};BiM#WA!*hGKH}c;@l=$)*ZRrBTb zUh}HvLiMgQBSzTRg9xWs4q%)_cX##vR_x{}cfcN^IQ*Qm=P#HCFR;@6idF8QnmlXi zzba05?vPD6S>JQz`JO9xw3hRu4gIJ@X!96a%YXcd%hgm{L}@lNPot)@`)c}5R?|6B z({6kuG*=GZzOZku1oN?pa)LZd&Lq;1?I;cVL-UkL-`R)xO`!!nSQwEL0$Z%4 zz5|2Vl6@5c9y@!D>i2(=L*F?ZTKF|1JIT2kC-z0M|2-p{b1KJiK{%MjQ}#g*(Hgn( zAT0@(?7`wrgycO3ZIIAD--VH3HIth1?9(UVLy;@ON@~m#6-P zw{QqYSO<>b7{8>BD=%J3!dl@BNN4k#qvow)G zH1P-cqm1Xabyl3lEIap}mwTRbo^$%``{%C!*08TaM=6c@46dOp#ex)zDweRU!oZ4x zRTXI&b61}C(pZ!Bbs2F#jR(^BP{AVw8w>*{t@=?-crCl>GU$~Pe#Q-lyLF@Ld$wEO zWaxLACU->F+xBh8s023hD&{fwTEb_T2p_w4(}--wZs?Oqwrtn-w;7Dm-@`&rJpX)+ zA+_7I2t8Y|UGb{jI27I+ei+sxi>PtWmU?7N`NwvPVXk6QAM1vAf685p8nMKgA$v6r zJl<$ zS<1J%yrN+QqZ)F^YZ$}0f=vxuc&uPs!xKDZ$X%VsPTO{I-G z0)`gF=!{ko}dxXoS;ispy99Wj%3@WO?Bnsq*4E`aY5) zfk~3%=p#8uk26p)ge?6=F^nm)PKOC_12;*dRAk9hdU>0nmx%!IRs{Ht^aS~GR{<~4 z-vd&QAV&hgaY`v6Wl~Dfh0H~eva{I;s2TtRg&5E!6xmyEs9Xeu<-@yw-?ChY6k=5Pe{_CYvDcB!C*}7>tIN#SrQ!#f1oBpe)|KIsTkr$ K7x7LIHTMHPRS(Dj literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Import.class b/out/production/main/ca/l5/expandingdev/jsgf/Import.class new file mode 100644 index 0000000000000000000000000000000000000000..4eae3b8ac3ec42c91e89471f86000eb8dbdfc45f GIT binary patch literal 737 zcmaJ;U2oGs5S(=!+i{(ygtkB_ZOUgF1b%_1R($}e5>iwiiYoDViH~qmVn?o1@v}gJ zRsxA1z>h-A#ZikIge=|O-t5fIu7Cah{u96pJP8qEqlOyp`q&In!A5|4Hf{yjwz1`7 z$H#p^XvUK)FOJk$3!2@bI#cmTrGxmm$W1!f6L|Y3HN}Bot-T2Eo(SC6SweE7Yf^nQ z9rtwpPW47JxvZ~7Cn`5KpFg_AM{_D@b^C1eGS;6aDoxla(P#1Sbnqd5Gc&}-ZaOnn z8|b1mBUo+kE_x8uSyIxw>NSn-;8GiN5U(b-xf)+IC5vnoM+>2%i0Giwi@|y>JUbk(JY9 zhyOF=|D_>20dE!F>saR5V0OrNhcWD2Ksryq!TG|>!3xi1)&d?}_*4mSgV}mnjV5j~ zBM+-o6@F{Pt~7<%<_}cfU%+iv&*62x!eMCoJkAk(CSG>&$O64tb*n_)T%GH_)QpK( UtZH?xlN*1LtC!^4EO&6{51{mvKmY&$ literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class b/out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class new file mode 100644 index 0000000000000000000000000000000000000000..a955e50b59460cef125a2227e9b6bb50ebbe13c2 GIT binary patch literal 1262 zcma)*U2hUW6o%hfaCceO@=^S#QV~ik(2vz>uQa`oSYsr5fi}^*0Y+E?3)x+o{wOar z(Kc#g;;lc*cxG7_0wM8cX6JCud!F+$^ZU>Dp8y`=$UqXM1Pp9x*w#=n5JxEq6IJk-mosR8vJL1ghd)*J#Ga2#hk@J{AePTPdf6TB` z`H%eSDMP$I>X3Y@VLRg0WY`k!8{QgFB-HIKqA_H;!ms!2K_|jx*sfGp3Pow8lkt{o**Qb9$Gt$)71SYCslI1er`TI(%w11( zX1^t4E2r)F~;$XpXC+&6I*YZ@LfSgZbv z=Pn-(xm*56&=hSy7(cZXF<&^2aO(r^d4epxv553^LS_lq#2pk&9O5C}gPKVfsK8KK z)qjS~ke(^NZuJR-p}49payzh*u0>&0W;h{TH9j5-r^B#cS+;Z8;cy%>TK7j&(@~^H zkOZTv&!9+i>4B*9okE({44qCWuF!7OE@}GRuTVbINkNv@HN8)r;K*u_ru1~X( z!!L@n5);Ldb&tqXKAaP uF#iMbcb8KqzCmTUfR@#1xjGj=zjsdx&$Nu literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class b/out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..ec930c6d81830fbc32781f50f40198a48d1415c3 GIT binary patch literal 811 zcma)4TT2^37(KJOxwXk9WwQzXECogI zp+CSMB|S5VD|o|~neY4NJLfxRX7289{{h%R$wnG0digYo3|4bk%VAx>R_A9j==)(H z@VVwmxBJyKrIsJGTWaWb`t1{U_o3;#K%pmN@06!?<;4b9taap&NEx)V z2eP}Tn+3$Nz+79!CRMG3PvA?r@~*MzUtvpedd&~i{-D=X(O=o@vQn&tp6oVc417=ZV#y7`2*Qa3X zDR}xt@B%)J!ABgGB4MF=gH(0%8lt*&4eOGnk%l6zfFx;7wmCb`$y(3G2sYM30(_)V PZK8lhc3O;=49oI=O53on literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class b/out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class new file mode 100644 index 0000000000000000000000000000000000000000..f9355314ab882e7cac31f4c59268f56847709b5a GIT binary patch literal 1499 zcma)6+fEZv6kVs6nYIi91*%*W%C#3{6u}$H3lU;c<)KO<#KfT;%aC?jXIkQ`|Ko!u z3Q-diU;QZKI@6()%Os@9IX$a;t-bc%=k)KtpT7YtV=Vy<^C~h4gpid>E{-1LRosr@ zP7iu@H`UAF8>**w$_+{%0XnM7QxZm$X` zPb}MNt_jR%cCSFlZVN=#>t$1*uVC5c%T{gAbY2;IRU*kky<}9k4absaAB;5jEmt5H zD8AKb(uz^tbn2}JZPJvW*vwVzFqGO;f!am$L(8;FCN&2tW^;Yts+K#|3(RJ+fz(cz zHMVs{4VHJ<~~T&vconr?HW?$iV(f{1>3XR@7)M=90qlEJjR2B%*9FsLu0aCeRh+hc3$sZ&9BDZja$ah4)@|O?>xh4_es&b7{ zEskL%Fhpds&E`496LoMMH@u8-j9`>(fiaBx*>vuLQPJEtM8EJ$TU_zLUQbZkWq>az za1*zPNULj%4slm<`7_q!9~4+nlu^=BsvXs_q|j0yHQ038ZEG!fXXcN5CZpR$s>?;F z<09Q*F8R!uEa4B7^Zc{M5UqrQ5W^^IVL`XS7E)yzTXo*<%N0gH(J2e7_Jr~m)} literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class b/out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..25f4214e1fbc583eae63c7ef32758335b9b02119 GIT binary patch literal 1261 zcma)5O>fgc5Pj_n+@S0X)K%jRF?(u(4=i*+SJu77GP9sOeih zhgE&9Sy;EQVZjv;N?>ufA>HKsZQPFu=T-xrX!)(@gEDAPdwj?wgpzI z|B+ui5XkOynuIUydcJzqJ2_Or8+q7fq_W#-$o7E@JnhH9Y;@#>L>~+Oy4?%+x+;)S zCmO{uYWm5^-Moz6y5QG7J^DgyK4Dig)~QgSQi#%0Dca?@nDtNfKKFG!t zuF+#1BSm6SVcdu@-M$Z8segg-iAe)E-58{!VKgBo#4rLk6GGd})`ZL&WKAhW z#7u~oxD^wb!E8)qEhb`QKN2y`qLN}^BrI+xm78&8PLJ>lnc@2BRDCX~=PJdWwXAx= t*&oQhyBH|(4W__3tV)jN9Qk2oW>T25F{XjLedhDH$I~We21{5$?l0F|1S$Xk literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class b/out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class new file mode 100644 index 0000000000000000000000000000000000000000..0f79f95e29c3999dc1198af9b3e792d23c45a087 GIT binary patch literal 1504 zcma)6+fEZv6kVs6nYN4q<)T!C0tI?OMiIQCJ`f=$RTHZu;)_FjEJNC9ooUfm|HlVS z6rv_3zWPzdb*81|)`T=Ur)SSzYp=cbnfd$g=WhVZcoc(yw2n*+0c6#Zi=qz;Iu;|i z(T59Iis2@fBUsUKOUG>;cLaj+V_je-U$o51iphiJlx(M5l6&T^SAJ(cRuRvxIrjy$ zRok%}4+ZAaZ_WY8YzlHD zll+Bz-?Uv>+Hh;lI%QH+!2KYQI*%R!LGtOIu^FmB)?`gO3T*$cGc zTGguMrVcwP$YO(6i}&MH#CYO3(p{@qo+mjqkv1@cl#W#c55OxZG6Lydbxw99FwnK; z`Svc$3QYAvcZTVk&!HHeU9DH7*I2K)Re{M~z;=7bsvV9;E7qK%#j?B#T`lb~oiRB~ z@!d5b_}cQ0D{J|ZYxtz>W+cwjTLk$7MzaSHzYutxJ3#Phc3~f(?+Ab8lK_Ue#u4JG zan;Ed!3d%lW+d4{^E}EEd2k7r{fbeHAwjgj6^ys5ncM}l!r5;Kf8n1Nx#kBApHRtV zLYq+FDkd0FQXeuqz+KDcj!9ErDX^t5n^KZSTUi}R8YbDeDx9PtEv^Os%=)3vL>yHy zazsU-qhh*)TxugDs)aw$PT~_s@X97-3%`v>wJUG2n$nwy>-n7G_<@MPKBD?=(tdBdx%cr|aaL`m^jK%Mn` zFPIZJo8B7W@skcTCmxbth5%b!o&m)b%G?&vk*9i7q^{C7&0v76%Ato)7zxkiKNW3XUPpDT2y|4 zf%L@Inh~41?WF7cbFWlv)n4E*-8*TKQFDWPRd2-!SW+b|BPZlmeX-;f1dN4py;^Xu zda{KH$#Yb`3=?}`n;61w6a5$vNVSW#;J&K6e!-PDuA10|K>=vEX5u<5fuaB3*`+%3 zaH|4(B}7Qgnz(_R?D|~lT#EV5n7Acxidli-c2Om$K;MS=-Nj|M5d5>%EbMr?)0T|3 z3%9B63HG9?tU8s7>lX!b+q{FV-E5@Jx2Ol@NCTt%gp>Tp6$n{qT0+(^oLPO&D&DZP zd%3@ltB?Hd0w22FoFYIF(Oj*V{>VZk}MWl2YFAyA=(3o z{ox|6;jo4yLc@5IJ>6h`M@5C6nSa@{8|>K)_H4+$fjz=U1(qtp?kDyDf4dlQh^Tu) z9KCat3F+$XlL3Gg`=4wBCaDZv0Fil|Dg~5oVk&=QZ z$nc#1Ts+eueqox$<~oa9gWl#WyVNDoS82q;wyWXhcqnQ{4h>O(qilMV`V_t8Wz|v| lk0!cpgcuouW;ZFQErrQ#6y)QS{oAZyQ(fgc5Pj<;wd0zmq#vP>1_G4kqpdG+qRN4ao}wbPG!oo4_BL_k+L7&4{3s3} zK`Vj858y{3W^KzZZIF8K&dhq|&3jM#`_GSG0A6CRj540+(9u-!R7U|#4bNnJu3<~Y z7b><@v{bYiv|#3nBYrLzs{IMS;HJyHk$DmYjyHPEus9OYan`chYR_vb9{4r^RQir5 zj%MdW5xnO^H-_{r?hbh1$U40&Mq?*r*zQ}j?3F1#O}S^&Hd|bnlW=rq%6-S;Oa#KS zgyaxj=djkgO`$ztSlD+wC+aaMK|nKO9v+Mx*Cr5#LaY6eVTJBay(teuVdwwKq%e`o zz=)TA;?Dw096GUpf4J;PgA5qBXP|}-L+z$xZ)UVo(0;aWpo<+!dIok;Vc5EpT!!Tw z^WAVFtcaocztOkSyU_6yiP8iWvWbyjAE(t4eSdg3ht*(fQl;RM$&*4tWw3WhIKmSaF4nb+1=@W2m4A{GOfqA zizv~oL|9L{QUpmsQjv>m8P*~7NG!c`1?2|b5;qhOd0KI1b literal 0 HcmV?d00001 diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Sequence.class b/out/production/main/ca/l5/expandingdev/jsgf/Sequence.class new file mode 100644 index 0000000000000000000000000000000000000000..4679b7869b2887b01266461cf4d91c9861c7c6ce GIT binary patch literal 4065 zcmbVPTXz&y8r`S6lS;ZPAvT5(AQA$^Bu!|Mi)bPW8Ip-MamENJcq_Wgq_9)nR97P2 z#oMT(bI~V!@{Jc=OV`pMx@MNX&eQyeS@SSIfyE57zpB&KMUs{*Urtq>sj zbpPXjKl~lQ0eqH5FP=%`Sv=Q{0X%QON+X45GB}5#45bWgydcAzfq4VxWpY6Vw+$5o z)igH9=V@G!JFg8jx%z1=Vo8RVhTOR_@Y6R9 zyrqz|FIE-03g@jQE5GPF<$S@Z`C|(0v(B7r`HP;daB#)z@j}tcmk;K-)^baZJ6E!o z^5<)FFXWHQOwFmdV@HV5I_|iRe?;N#p|k5)GJHxQHBl)s;)a6b+B1s_=WOo@>s*;L z*+Qjgl}}loBhPv=<p!2v`VFDN?~wl9Set<#s<$`s4UsB zrR{UJKkIw!g~FXf!(qe9mOGaZXN3SVm0kV9z}rlu<}6gpcFmuxcnb=ACn4H<ipOu4QqQQ#xQQ;kNB8u^qcqusfou}FgXec=fNX|qG_u0I*st-Xcon?t$hSydL#x7N z7^y2rCBNis5|V3c_(cpUtC0@yZ3_}z4-3e_2=o%4q`X`RYA6(P*U%=|y}W5x_zCF~ zdwxddGFnn!Ub*?NShP(<1bWbi%_O*&^ll}o+aiYg$XFhS0b|Z&n+_{YI!j+r<%q?^K&wWj(uw`4= zG?2C=3Fv2?4>F~PS=Vt&OQhD%H~pkoh?GuE>6(-H4Zl6Y^rW?&NcG0Phjf6tI@24gYu%Cy5Btlj8#d=6>ZzVp@0v+W5 zuZo$ZqbMsoHy(pZYbeDknhX5%CIUYiLt0bd+{JZTPisZ>EerZ7WnB`2khaaza7 zhP;>~Ldr6>uBPM+DLIQS{$FWOQYW3e(XEtp5uPXUF9+GSI!K8@YzCQMZ;;>PaUJA! zRwB+EAUS;skta8Xo}3vOUB+FfuiX4kN(332E*q?H+0Y8DRi(i$1cAkDJv5}WSErz4E@kkY>U_{1XtWUu?BYo-(&l&!P(~XiN oLMU!Y(pf8Q`e}^imI$~7X95!?Xa=$M(@xs@fu&RaQK;J{?cNMw&C zOu3b|>`dBRPAudzw-Uum!vdjH&UQ`P%?oUsTrif6M8UPPiAgK(^0YB&Wo*MOIHthC zisO^sbJnmkiKOe0V0eTk!IPG4xg!E6V$a~fR*b$Gf%>srnv5-zmTgWK7UxXovN4zC zPINMtGO{yYeUa+@y1pP6_#sc z=;-z;#{#Vx(;cfQ;h|Vx&7jJQ*qYyJ+ekdGECOxBsSX9(LNXnhGJ4yT zbdA*QDPu`xo2t~{2t?+MyzYh4-5x~9Vp zvzE=INpbF|ER$ah>E8qk64SAY_qgcO@jmY9_y9vXKEy|?ijMmj)$uVtVJ}zW2n2eh z-8~JT3M6XzGwv9Ri-vP>qmD^4<*K(y%a$E|!nRFkENkTRCR6trKG*RDzSQv*mUVoM zZv=MLqESUG^YP-`0*M6n)iNlmo&8%X&jgcaxH+na3S@1YOGmP3+@>BXuU`q?n@WLf@(3|e;HbVzk1Hc>^iTeeEg6*QKXOq=cvR#W@`7>3;3 zMq`JpVg@=kdR%$8kr_6z#*$&8egb z#HyyMy#0zCL9fZZP9Du>`TFsLS6+|hvRO}XtPh)U55KMKF9i5wYx08|kbTI#Lu%a% zo$JGhaqQ!c&ChQg=brc)M7;kY0`bSFyS9e>qx3~`KgUsWU*YWl=k{vcCBi7F06A_aVHQ0iJgA_EA;9RX^r1 zmT;1L0;hPNqIiNm8b)?ML8FG#|ER*hf>A#g1Ds{f1NA@1v8*B|$|@4@u?5Z)Ev0~@ zWys4|XQlnAGW$@`ehg=6C95z)Hd)awFO^*azoA{_wSOJE*ib4f-c%T>g4!KkY+EN5Hz);2%WiaZl}QOYdhOn|A&x%J2nHg@=;B z@_*3<=B7LQ-W{qQ_qhHq$)24*(UHMAU!VwXm!D%B@qz3=Tl1_i+Gd^CnpH;qn P8Su&@@f7%72DkVCTF-+6 literal 0 HcmV?d00001 diff --git a/out/test/main/GrammarCompileTest.class b/out/test/main/GrammarCompileTest.class new file mode 100644 index 0000000000000000000000000000000000000000..51bbd479ad00843ddc19c932197d8188ebb0d24c GIT binary patch literal 3952 zcmb_f`Bxj)75*Lw%^+lBe4}apuy6NJQ{%s zrdygOY14gQlkQ9Gwn-CkLX!T{lb+MRsVAr38;vlVV)vY~%)9r#d+)pVyZ5~}^Y0Jd zehrSCd|t;Fl=2rF@g;m&QO`#3 z6+EZot2&-n{0r*wqK>cW__~IdBIr^venXAlRF4(pvWIa@FVuA~btb)8`l`KX*Xxolw`qKhCh8=f0Ia6l#$spkE zYT3({mwU2MbX}KRy zq9?HT+$K1?6b4az976(!?|~)rR*7`lWb!wINl<5^)wdP)ldbWbuqzvnhGKEbR;zi`P;arHbXstdEi33P)?IGVD<~ zCEbe4MnC?`j+<4Gy`mn!Vm~TCSon?Yt zd(ySpRkJdsFgsLBam=|UiC05T=JSp~UCts?l(c4OGfs|kA?~4h4yJ9JjB3iVvtv1v zPUCT+WE=BN*(m0vS(1jDGdxaqBo=&+iwikxF%iY@@dpimjN(uDa}=-QmWJC=`~|PD z$1V<(TL)&_*)dO;TEGD85}!vK8P|>39SOl-i?JjUAFQJi@Q#3V54$4^hWVI{vO2} zcvIljU}v%oyYf9UMvqvZLHh1SSIc4~e!C&1xvVjf&&6v}RbXoBiv2t>u(f zD#z0^XIeMUb9^S}loLF2j@0VZ;P~gWzQOW590L%dxP!MeydA{~-eC_1 z;_fKkReW>6PgwS>nYXe$&1!hAhRh3K^KrOt7e6&QBQxA22mStV3s&-Jo0X+r+ zf!*=V7m2#^+T-IjPwCZju1{$`5x)<`@vT>(?Z)=)yWe#+Gn=g(%x$$JPzrvOtwqx< z$<@e9XI-aIy-Sa85k=xYl3Is%YQE%2-qQ6>nW*os&@9tMdd8dGjWffPT*y2Ee(-iYaCa@=~A%5-n(q1F!bi^a2!gTr(FurJhbo^-ULfG6<@asr>EalJCGi(n5z6uB#?OE05-xFZ&N6Ac|J z2&ZFO=w0aP`V};$R}e`z1YA?PDvzdP+m^9CwT$LeI<$gyGdrp?%V?o#EL|VlNv+r} zs_*9io+a$9th24^Z{O+~t?AhQWgPIml0K;DWgJ>(w&Sju7KBFC2iBM!_UVQdP;U5i z*r(gJa`%ynyVytX;7G8}>p0r6ga?<&CSKJQqfw-<=)c;FijIt2B<7r$XrTXVGM}bdQyG1<9d5yAv#d?N26cDk;E_8D2 zW$lkM^T&G|S{n$*6Ri!cAr9+sQW6DOthYD30jt*VDp<6S^(nsp4o)a$AYe`^=2Vr5 z4gMdT+}$jr*u}Kk2+UEIp`FDzh88@8{pf_jufKKz_XvOc`5k)-J-C9$FwL($50CSM zvLDak1YX7fZs8=}qQ?8&t7_wo(%UHv`k;rYRiy}FP^NnP6KR%&XC?kYzbq41e+T1! cnOgWp@EOWNjN~@1;", ""); + String importName = statement.trim(); + grammar.addImport(importName); } - } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/ca/l5/expandingdev/jsgf/GrammarGroup.java b/src/main/java/ca/l5/expandingdev/jsgf/GrammarGroup.java new file mode 100644 index 0000000..b74b250 --- /dev/null +++ b/src/main/java/ca/l5/expandingdev/jsgf/GrammarGroup.java @@ -0,0 +1,256 @@ +package ca.l5.expandingdev.jsgf; + +import java.util.*; + +public class GrammarGroup { + private Map grammarMap; + + public GrammarGroup() { + grammarMap = new HashMap<>(); + } + + public void addGrammar(Grammar grammar) { + grammarMap.put(grammar.name, grammar); + } + + public boolean matchesRule(Grammar grammar, String ruleName, String test) { + try { + Rule rule = grammar.getRule(ruleName); // Try to get the rule + return this.matchesRule(grammar, rule, test); + } + catch (RuntimeException exception) { + return false; + } + } + + public boolean matchesRule(Grammar grammar, Rule rule, String test) { + String[] words = test.split(" "); + List m1 = this.getMatchingExpansions(grammar, rule.getChildExpansion(), words, 0); + int matchCount = 0; + for (MatchInfo mi2 : m1) { + if (!mi2.getMatchingStringSection().equals("")) { + matchCount++; + } + } + return matchCount == words.length; // Must match all the words! + } + + private List getMatchingExpansions( + Grammar grammar, Expansion expansion, String[] words, int wordPosition) { + List matchList = new ArrayList<>(); + if (expansion instanceof Token) { + Token token = (Token) expansion; + if (token.getText().equals(words[wordPosition])) { + String matchedPart = words[wordPosition]; + matchList.add(new MatchInfo(token, words[wordPosition])); + } + } else if (expansion instanceof RuleReference) { + RuleReference ref = (RuleReference) expansion; + try { + // Try to get the rule + Rule rule = this.getRule(grammar, ref.getRuleName()); + Grammar grammarReference = grammar; + if (rule == null) { + // rule reference may be import rule + Grammar importGrammar = findImportGrammarByRule(grammar, ref.getRuleName()); + if (importGrammar != null) { + rule = this.getRule(importGrammar, ref.getRuleName()); + grammarReference = importGrammar; + } + } + if (rule == null) { + throw new RuntimeException("Could not find rule by name: " + ref.getRuleName()); + } + List matchingExpansions = this.getMatchingExpansions( + grammarReference, rule.getChildExpansion(), words, wordPosition); + if (matchingExpansions.size() != 0) { + // Need to mark that the rule was matched! + matchList.add(new MatchInfo(expansion, "")); + matchList.addAll(matchingExpansions); + } + } catch (RuntimeException exception) { + // Rule couldnt be found + } + } else if (expansion instanceof OptionalGrouping) { + OptionalGrouping optionalGrouping = (OptionalGrouping) expansion; + List matchingExpansions = this.getMatchingExpansions( + grammar, optionalGrouping.getChildExpansion(), words, wordPosition); + if (matchingExpansions.size() == 0) { + // Optional, so it can match. Used for sequences + // matchList.add(new MatchInfo(e, "")); + } else { + //Matches + matchList.add(new MatchInfo(expansion, "")); + matchList.addAll(this.getMatchingExpansions( + grammar, optionalGrouping.getChildExpansion(), words, wordPosition)); + } + } else if (expansion instanceof RequiredGrouping) { + RequiredGrouping requiredGrouping = (RequiredGrouping) expansion; + List matchingExpansions = (this.getMatchingExpansions(grammar, requiredGrouping.getChildExpansion(), words, wordPosition)); + + if (matchingExpansions.size() != 0) { + matchList.add(new MatchInfo(expansion, "")); + matchList.addAll(matchingExpansions); + } + } else if (expansion instanceof Tag) { + Tag tag = (Tag) expansion; + List matchingExpansions = this.getMatchingExpansions( + grammar, tag.getChildExpansion(), words, wordPosition); + if (matchingExpansions.size() != 0) { + matchList.add(new MatchInfo(expansion,"")); + matchList.addAll(matchingExpansions); // Found a match! Add it to the list + } + } else if (expansion instanceof AlternativeSet) { + AlternativeSet as = (AlternativeSet) expansion; + for (Expansion expansionTmp : as.getChildExpansions()) { + List matchingExpansions = this.getMatchingExpansions( + grammar, expansionTmp, words, wordPosition); + + if ((expansionTmp instanceof KleeneStar || expansionTmp instanceof OptionalGrouping) && + matchingExpansions.size() == 0) { // Stupid OptionalGrouping + continue; + } + + if (matchingExpansions.size() != 0) { + matchList.add(new MatchInfo(expansion,"")); + matchList.addAll(matchingExpansions); // Found a match! Add it to the list + break; + } + } + } else if (expansion instanceof Sequence) { + Sequence seq = (Sequence) expansion; + List localMatchList = new ArrayList<>(); + int matchedCount = 0; + for (Object object : seq) { + Expansion expansionTemp = (Expansion) object; + List m1 = this.getMatchingExpansions(grammar, expansionTemp, words, wordPosition); + if (m1.size() == 0 && (expansionTemp instanceof KleeneStar || expansionTemp instanceof OptionalGrouping)) { + matchedCount++; // Still counts a match + continue; + } + + if (m1.size() != 0) { + matchedCount++; + for (MatchInfo localMatch : m1) { + if(!localMatch.getMatchingStringSection().equals("")) { + wordPosition += localMatch.getMatchingStringSection().split(" ").length; + } + } + localMatchList.addAll(m1); // Found a match! Add it to the list + } + else { // Doesn't match! Sequence aborted. + localMatchList.clear(); + break; + } + + if (wordPosition > words.length - 1) { // Sequence is longer than provided words! Abort! + break; + } + } + + if (matchedCount != seq.size()) { // Not all of the required matches were met! + localMatchList.clear(); + } + + if (localMatchList.size() != 0) { + matchList.add(new MatchInfo(expansion, "")); + matchList.addAll(localMatchList); + } + } else if (expansion instanceof KleeneStar) { + KleeneStar kleeneStar = (KleeneStar) expansion; + boolean done = false; + List matchInfoList; + matchList.add(new MatchInfo(expansion, "")); + while(!done) { + if (wordPosition > words.length - 1) { + break; + } + matchInfoList = this.getMatchingExpansions(grammar, kleeneStar.getChildExpansion(), words, wordPosition); + if (matchInfoList.size() == 0) { + // No matches + done = true; + } else { + //Matches + for (MatchInfo mi2 : matchInfoList) { + if(!mi2.getMatchingStringSection().equals("")) { + wordPosition += mi2.getMatchingStringSection().split(" ").length; + } + } + matchList.addAll(matchInfoList); + matchList.add(new MatchInfo(expansion, "")); + } + } + } else if (expansion instanceof PlusOperator) { + PlusOperator plusOperator = (PlusOperator) expansion; + boolean done = false; + List matchInfoList; + while(!done) { + if (wordPosition > words.length-1) { + break; + } + matchInfoList = this.getMatchingExpansions(grammar, plusOperator.getChildExpansion(), words, wordPosition); + if (matchInfoList.size() == 0) { + // No matches + done = true; + } else { + //Matches + matchList.add(new MatchInfo(expansion, "")); + for (MatchInfo matchInfo : matchInfoList) { + if(!matchInfo.getMatchingStringSection().equals("")) { + wordPosition += matchInfo.getMatchingStringSection().split(" ").length; + } + } + matchList.addAll(matchInfoList); + } + } + } + + return matchList; + } + + private Rule getRule(Grammar grammar, String ruleName) { + for (Rule rule : grammar.getRules()) { + if (rule.name.equals(ruleName)) { + return rule; + } + } + // Can find rule in grammar, may be in import rule. + return null; + } + + private Grammar findImportGrammarByRule(Grammar grammar, String ruleName) { + for (Import importRule : grammar.getImports()) { + String[] items = importRule.getImportName().split("\\."); + if (items.length == 0) { + continue; + } + String importRuleName = items[items.length-1].trim(); + if (importRuleName.equals(ruleName) || importRuleName.equals("*")) { + StringJoiner stringJoiner = new StringJoiner("."); + for (int i = 0; i < items.length-1; ++i) { + stringJoiner.add(items[i]); + } + String grammarName = stringJoiner.toString(); + Grammar importGrammar = grammarMap.get(grammarName); + if (importGrammar == null) { + continue; + } + // import * need find match rule + if (importRuleName.equals("*")) { + for (Rule rule : importGrammar.getRules()) { + if (rule.isvisible && rule.name.equals(ruleName)) { + return importGrammar; + } + } + } else { + // import real rule name + Rule rule = importGrammar.getRule(importRuleName); + if (rule != null && rule.isvisible) { + return importGrammar; + } + } + } + } + return null; + } +} diff --git a/src/main/java/ca/l5/expandingdev/jsgf/Import.java b/src/main/java/ca/l5/expandingdev/jsgf/Import.java index 652e1a4..5bfe329 100644 --- a/src/main/java/ca/l5/expandingdev/jsgf/Import.java +++ b/src/main/java/ca/l5/expandingdev/jsgf/Import.java @@ -10,4 +10,8 @@ public Import(String name) { public String getString() { return "import <" + importName + ">;"; } + + public String getImportName() { + return importName; + } } diff --git a/src/main/test/GrammarCompileTest.java b/src/main/test/GrammarCompileTest.java index c33f46b..51cc22d 100644 --- a/src/main/test/GrammarCompileTest.java +++ b/src/main/test/GrammarCompileTest.java @@ -1,4 +1,5 @@ import ca.l5.expandingdev.jsgf.*; +import org.junit.Assert; import org.junit.Test; import java.rmi.UnexpectedException; @@ -26,4 +27,41 @@ public void test() throws UnexpectedException { System.out.println(g.getMatchingRule(testString).name); } } + + @Test + public void testWithImport() throws UnexpectedException { + String grammarText = "grammar ca.l5.expandingdev.test;" + + "import ;" + + "public = (What is the weather in );" + + " = (What is the weather in );"; + Grammar grammar = Grammar.parseGrammarFromString(grammarText); + + String grammarText2 = "grammar ca.l5.expandingdev.common;" + + "public = (Beijing|);" + + " = (Shanghai|Hangzhou);"; + Grammar grammar2 = Grammar.parseGrammarFromString(grammarText2); + + GrammarGroup grammarGroup = new GrammarGroup(); + grammarGroup.addGrammar(grammar); + grammarGroup.addGrammar(grammar2); + + System.out.println(grammar.toString()); + System.out.println(grammar2.toString()); + + { + String testString = "What is the weather in Beijing"; + System.out.println("Test String:" + testString); + Assert.assertTrue(grammarGroup.matchesRule(grammar, "weather", testString)); + Assert.assertFalse(grammarGroup.matchesRule(grammar, "weather2", testString)); + Assert.assertFalse(grammarGroup.matchesRule(grammar, "weather_invalid", testString)); + } + + { + String testString = "What is the weather in Shanghai"; + System.out.println("Test String:" + testString); + Assert.assertTrue(grammarGroup.matchesRule(grammar, "weather", testString)); + Assert.assertFalse(grammarGroup.matchesRule(grammar, "weather2", testString)); + Assert.assertFalse(grammarGroup.matchesRule(grammar, "weather_invalid", testString)); + } + } } From 0bdf3057d8c52e91e4ce275fd615dd74ec001143 Mon Sep 17 00:00:00 2001 From: xiongchao Date: Sat, 2 Oct 2021 15:55:05 +0800 Subject: [PATCH 2/2] remove class --- out/artifacts/jsgfkit_jar/jsgfkit_jar.jar | Bin 27376 -> 0 bytes .../l5/expandingdev/jsgf/AlternativeSet.class | Bin 2791 -> 0 bytes .../ca/l5/expandingdev/jsgf/Expansion.class | Bin 224 -> 0 bytes .../jsgf/Grammar$UnparsedSection.class | Bin 1051 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Grammar.class | Bin 18880 -> 0 bytes .../ca/l5/expandingdev/jsgf/GrammarGroup.class | Bin 8348 -> 0 bytes .../ca/l5/expandingdev/jsgf/GrammarHeader.class | Bin 1319 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Import.class | Bin 737 -> 0 bytes .../ca/l5/expandingdev/jsgf/KleeneStar.class | Bin 1262 -> 0 bytes .../ca/l5/expandingdev/jsgf/MatchInfo.class | Bin 811 -> 0 bytes .../l5/expandingdev/jsgf/OptionalGrouping.class | Bin 1499 -> 0 bytes .../ca/l5/expandingdev/jsgf/PlusOperator.class | Bin 1261 -> 0 bytes .../l5/expandingdev/jsgf/RequiredGrouping.class | Bin 1504 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Rule.class | Bin 1780 -> 0 bytes .../ca/l5/expandingdev/jsgf/RuleReference.class | Bin 1053 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Sequence.class | Bin 4065 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Tag.class | Bin 3155 -> 0 bytes .../main/ca/l5/expandingdev/jsgf/Token.class | Bin 832 -> 0 bytes out/test/main/GrammarCompileTest.class | Bin 3952 -> 0 bytes 19 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 out/artifacts/jsgfkit_jar/jsgfkit_jar.jar delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/AlternativeSet.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Expansion.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Grammar.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/GrammarGroup.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/GrammarHeader.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Import.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Rule.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/RuleReference.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Sequence.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Tag.class delete mode 100644 out/production/main/ca/l5/expandingdev/jsgf/Token.class delete mode 100644 out/test/main/GrammarCompileTest.class diff --git a/out/artifacts/jsgfkit_jar/jsgfkit_jar.jar b/out/artifacts/jsgfkit_jar/jsgfkit_jar.jar deleted file mode 100644 index 052a59b2ec330a9d52efb4ffc49a5668c28f6a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27376 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 D{4H020q;;Q>69anVGY_a*Zt zGxK^so&Z)D+i-1o1SghF*i@;C33ER2$7nM{5!w=4cnbuCK zwXnT#5X aKp5!FfMM!(n1JRG)|Yli?HK7hfb#)LemBkl diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class b/out/production/main/ca/l5/expandingdev/jsgf/Grammar$UnparsedSection.class deleted file mode 100644 index 2a9473b1976f7ccfc51cf08005fac2651343ef28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 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 K7x7LIHTMHPRS(Dj diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Import.class b/out/production/main/ca/l5/expandingdev/jsgf/Import.class deleted file mode 100644 index 4eae3b8ac3ec42c91e89471f86000eb8dbdfc45f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmaJ;U2oGs5S(=!+i{(ygtkB_ZOUgF1b%_1R($}e5>iwiiYoDViH~qmVn?o1@v}gJ zRsxA1z>h-A#ZikIge=|O-t5fIu7Cah{u96pJP8qEqlOyp`q&In!A5|4Hf{yjwz1`7 z$H#p^XvUK)FOJk$3!2@bI#cmTrGxmm$W1!f6L|Y3HN}Bot-T2Eo(SC6SweE7Yf^nQ z9rtwpPW47JxvZ~7Cn`5KpFg_AM{_D@b^C1eGS;6aDoxla(P#1Sbnqd5Gc&}-ZaOnn z8|b1mBUo+kE_x8uSyIxw>NSn-;8GiN5U(b-xf)+IC5vnoM+>2%i0Giwi@|y>JUbk(JY9 zhyOF=|D_>20dE!F>saR5V0OrNhcWD2Ksryq!TG|>!3xi1)&d?}_*4mSgV}mnjV5j~ zBM+-o6@F{Pt~7<%<_}cfU%+iv&*62x!eMCoJkAk(CSG>&$O64tb*n_)T%GH_)QpK( UtZH?xlN*1LtC!^4EO&6{51{mvKmY&$ diff --git a/out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class b/out/production/main/ca/l5/expandingdev/jsgf/KleeneStar.class deleted file mode 100644 index a955e50b59460cef125a2227e9b6bb50ebbe13c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262 zcma)*U2hUW6o%hfaCceO@=^S#QV~ik(2vz>uQa`oSYsr5fi}^*0Y+E?3)x+o{wOar z(Kc#g;;lc*cxG7_0wM8cX6JCud!F+$^ZU>Dp8y`=$UqXM1Pp9x*w#=n5JxEq6IJk-mosR8vJL1ghd)*J#Ga2#hk@J{AePTPdf6TB` z`H%eSDMP$I>X3Y@VLRg0WY`k!8{QgFB-HIKqA_H;!ms!2K_|jx*sfGp3Pow8lkt{o**Qb9$Gt$)71SYCslI1er`TI(%w11( zX1^t4E2r)F~;$XpXC+&6I*YZ@LfSgZbv z=Pn-(xm*56&=hSy7(cZXF<&^2aO(r^d4epxv553^LS_lq#2pk&9O5C}gPKVfsK8KK z)qjS~ke(^NZuJR-p}49payzh*u0>&0W;h{TH9j5-r^B#cS+;Z8;cy%>TK7j&(@~^H zkOZTv&!9+i>4B*9okE({44qCWuF!7OE@}GRuTVbINkNv@HN8)r;K*u_ru1~X( z!!L@n5);Ldb&tqXKAaP uF#iMbcb8KqzCmTUfR@#1xjGj=zjsdx&$Nu diff --git a/out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class b/out/production/main/ca/l5/expandingdev/jsgf/MatchInfo.class deleted file mode 100644 index ec930c6d81830fbc32781f50f40198a48d1415c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcma)4TT2^37(KJOxwXk9WwQzXECogI zp+CSMB|S5VD|o|~neY4NJLfxRX7289{{h%R$wnG0digYo3|4bk%VAx>R_A9j==)(H z@VVwmxBJyKrIsJGTWaWb`t1{U_o3;#K%pmN@06!?<;4b9taap&NEx)V z2eP}Tn+3$Nz+79!CRMG3PvA?r@~*MzUtvpedd&~i{-D=X(O=o@vQn&tp6oVc417=ZV#y7`2*Qa3X zDR}xt@B%)J!ABgGB4MF=gH(0%8lt*&4eOGnk%l6zfFx;7wmCb`$y(3G2sYM30(_)V PZK8lhc3O;=49oI=O53on diff --git a/out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class b/out/production/main/ca/l5/expandingdev/jsgf/OptionalGrouping.class deleted file mode 100644 index f9355314ab882e7cac31f4c59268f56847709b5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1499 zcma)6+fEZv6kVs6nYIi91*%*W%C#3{6u}$H3lU;c<)KO<#KfT;%aC?jXIkQ`|Ko!u z3Q-diU;QZKI@6()%Os@9IX$a;t-bc%=k)KtpT7YtV=Vy<^C~h4gpid>E{-1LRosr@ zP7iu@H`UAF8>**w$_+{%0XnM7QxZm$X` zPb}MNt_jR%cCSFlZVN=#>t$1*uVC5c%T{gAbY2;IRU*kky<}9k4absaAB;5jEmt5H zD8AKb(uz^tbn2}JZPJvW*vwVzFqGO;f!am$L(8;FCN&2tW^;Yts+K#|3(RJ+fz(cz zHMVs{4VHJ<~~T&vconr?HW?$iV(f{1>3XR@7)M=90qlEJjR2B%*9FsLu0aCeRh+hc3$sZ&9BDZja$ah4)@|O?>xh4_es&b7{ zEskL%Fhpds&E`496LoMMH@u8-j9`>(fiaBx*>vuLQPJEtM8EJ$TU_zLUQbZkWq>az za1*zPNULj%4slm<`7_q!9~4+nlu^=BsvXs_q|j0yHQ038ZEG!fXXcN5CZpR$s>?;F z<09Q*F8R!uEa4B7^Zc{M5UqrQ5W^^IVL`XS7E)yzTXo*<%N0gH(J2e7_Jr~m)} diff --git a/out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class b/out/production/main/ca/l5/expandingdev/jsgf/PlusOperator.class deleted file mode 100644 index 25f4214e1fbc583eae63c7ef32758335b9b02119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1261 zcma)5O>fgc5Pj_n+@S0X)K%jRF?(u(4=i*+SJu77GP9sOeih zhgE&9Sy;EQVZjv;N?>ufA>HKsZQPFu=T-xrX!)(@gEDAPdwj?wgpzI z|B+ui5XkOynuIUydcJzqJ2_Or8+q7fq_W#-$o7E@JnhH9Y;@#>L>~+Oy4?%+x+;)S zCmO{uYWm5^-Moz6y5QG7J^DgyK4Dig)~QgSQi#%0Dca?@nDtNfKKFG!t zuF+#1BSm6SVcdu@-M$Z8segg-iAe)E-58{!VKgBo#4rLk6GGd})`ZL&WKAhW z#7u~oxD^wb!E8)qEhb`QKN2y`qLN}^BrI+xm78&8PLJ>lnc@2BRDCX~=PJdWwXAx= t*&oQhyBH|(4W__3tV)jN9Qk2oW>T25F{XjLedhDH$I~We21{5$?l0F|1S$Xk diff --git a/out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class b/out/production/main/ca/l5/expandingdev/jsgf/RequiredGrouping.class deleted file mode 100644 index 0f79f95e29c3999dc1198af9b3e792d23c45a087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcma)6+fEZv6kVs6nYN4q<)T!C0tI?OMiIQCJ`f=$RTHZu;)_FjEJNC9ooUfm|HlVS z6rv_3zWPzdb*81|)`T=Ur)SSzYp=cbnfd$g=WhVZcoc(yw2n*+0c6#Zi=qz;Iu;|i z(T59Iis2@fBUsUKOUG>;cLaj+V_je-U$o51iphiJlx(M5l6&T^SAJ(cRuRvxIrjy$ zRok%}4+ZAaZ_WY8YzlHD zll+Bz-?Uv>+Hh;lI%QH+!2KYQI*%R!LGtOIu^FmB)?`gO3T*$cGc zTGguMrVcwP$YO(6i}&MH#CYO3(p{@qo+mjqkv1@cl#W#c55OxZG6Lydbxw99FwnK; z`Svc$3QYAvcZTVk&!HHeU9DH7*I2K)Re{M~z;=7bsvV9;E7qK%#j?B#T`lb~oiRB~ z@!d5b_}cQ0D{J|ZYxtz>W+cwjTLk$7MzaSHzYutxJ3#Phc3~f(?+Ab8lK_Ue#u4JG zan;Ed!3d%lW+d4{^E}EEd2k7r{fbeHAwjgj6^ys5ncM}l!r5;Kf8n1Nx#kBApHRtV zLYq+FDkd0FQXeuqz+KDcj!9ErDX^t5n^KZSTUi}R8YbDeDx9PtEv^Os%=)3vL>yHy zazsU-qhh*)TxugDs)aw$PT~_s@X97-3%`v>wJUG2n$nwy>-n7G_<@MPKBD?=(tdBdx%cr|aaL`m^jK%Mn` zFPIZJo8B7W@skcTCmxbth5%b!o&m)b%G?&vk*9i7q^{C7&0v76%Ato)7zxkiKNW3XUPpDT2y|4 zf%L@Inh~41?WF7cbFWlv)n4E*-8*TKQFDWPRd2-!SW+b|BPZlmeX-;f1dN4py;^Xu zda{KH$#Yb`3=?}`n;61w6a5$vNVSW#;J&K6e!-PDuA10|K>=vEX5u<5fuaB3*`+%3 zaH|4(B}7Qgnz(_R?D|~lT#EV5n7Acxidli-c2Om$K;MS=-Nj|M5d5>%EbMr?)0T|3 z3%9B63HG9?tU8s7>lX!b+q{FV-E5@Jx2Ol@NCTt%gp>Tp6$n{qT0+(^oLPO&D&DZP zd%3@ltB?Hd0w22FoFYIF(Oj*V{>VZk}MWl2YFAyA=(3o z{ox|6;jo4yLc@5IJ>6h`M@5C6nSa@{8|>K)_H4+$fjz=U1(qtp?kDyDf4dlQh^Tu) z9KCat3F+$XlL3Gg`=4wBCaDZv0Fil|Dg~5oVk&=QZ z$nc#1Ts+eueqox$<~oa9gWl#WyVNDoS82q;wyWXhcqnQ{4h>O(qilMV`V_t8Wz|v| lk0!cpgcuouW;ZFQErrQ#6y)QS{oAZyQ(fgc5Pj<;wd0zmq#vP>1_G4kqpdG+qRN4ao}wbPG!oo4_BL_k+L7&4{3s3} zK`Vj858y{3W^KzZZIF8K&dhq|&3jM#`_GSG0A6CRj540+(9u-!R7U|#4bNnJu3<~Y z7b><@v{bYiv|#3nBYrLzs{IMS;HJyHk$DmYjyHPEus9OYan`chYR_vb9{4r^RQir5 zj%MdW5xnO^H-_{r?hbh1$U40&Mq?*r*zQ}j?3F1#O}S^&Hd|bnlW=rq%6-S;Oa#KS zgyaxj=djkgO`$ztSlD+wC+aaMK|nKO9v+Mx*Cr5#LaY6eVTJBay(teuVdwwKq%e`o zz=)TA;?Dw096GUpf4J;PgA5qBXP|}-L+z$xZ)UVo(0;aWpo<+!dIok;Vc5EpT!!Tw z^WAVFtcaocztOkSyU_6yiP8iWvWbyjAE(t4eSdg3ht*(fQl;RM$&*4tWw3WhIKmSaF4nb+1=@W2m4A{GOfqA zizv~oL|9L{QUpmsQjv>m8P*~7NG!c`1?2|b5;qhOd0KI1b diff --git a/out/production/main/ca/l5/expandingdev/jsgf/Sequence.class b/out/production/main/ca/l5/expandingdev/jsgf/Sequence.class deleted file mode 100644 index 4679b7869b2887b01266461cf4d91c9861c7c6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4065 zcmbVPTXz&y8r`S6lS;ZPAvT5(AQA$^Bu!|Mi)bPW8Ip-MamENJcq_Wgq_9)nR97P2 z#oMT(bI~V!@{Jc=OV`pMx@MNX&eQyeS@SSIfyE57zpB&KMUs{*Urtq>sj zbpPXjKl~lQ0eqH5FP=%`Sv=Q{0X%QON+X45GB}5#45bWgydcAzfq4VxWpY6Vw+$5o z)igH9=V@G!JFg8jx%z1=Vo8RVhTOR_@Y6R9 zyrqz|FIE-03g@jQE5GPF<$S@Z`C|(0v(B7r`HP;daB#)z@j}tcmk;K-)^baZJ6E!o z^5<)FFXWHQOwFmdV@HV5I_|iRe?;N#p|k5)GJHxQHBl)s;)a6b+B1s_=WOo@>s*;L z*+Qjgl}}loBhPv=<p!2v`VFDN?~wl9Set<#s<$`s4UsB zrR{UJKkIw!g~FXf!(qe9mOGaZXN3SVm0kV9z}rlu<}6gpcFmuxcnb=ACn4H<ipOu4QqQQ#xQQ;kNB8u^qcqusfou}FgXec=fNX|qG_u0I*st-Xcon?t$hSydL#x7N z7^y2rCBNis5|V3c_(cpUtC0@yZ3_}z4-3e_2=o%4q`X`RYA6(P*U%=|y}W5x_zCF~ zdwxddGFnn!Ub*?NShP(<1bWbi%_O*&^ll}o+aiYg$XFhS0b|Z&n+_{YI!j+r<%q?^K&wWj(uw`4= zG?2C=3Fv2?4>F~PS=Vt&OQhD%H~pkoh?GuE>6(-H4Zl6Y^rW?&NcG0Phjf6tI@24gYu%Cy5Btlj8#d=6>ZzVp@0v+W5 zuZo$ZqbMsoHy(pZYbeDknhX5%CIUYiLt0bd+{JZTPisZ>EerZ7WnB`2khaaza7 zhP;>~Ldr6>uBPM+DLIQS{$FWOQYW3e(XEtp5uPXUF9+GSI!K8@YzCQMZ;;>PaUJA! zRwB+EAUS;skta8Xo}3vOUB+FfuiX4kN(332E*q?H+0Y8DRi(i$1cAkDJv5}WSErz4E@kkY>U_{1XtWUu?BYo-(&l&!P(~XiN oLMU!Y(pf8Q`e}^imI$~7X95!?Xa=$M(@xs@fu&RaQK;J{?cNMw&C zOu3b|>`dBRPAudzw-Uum!vdjH&UQ`P%?oUsTrif6M8UPPiAgK(^0YB&Wo*MOIHthC zisO^sbJnmkiKOe0V0eTk!IPG4xg!E6V$a~fR*b$Gf%>srnv5-zmTgWK7UxXovN4zC zPINMtGO{yYeUa+@y1pP6_#sc z=;-z;#{#Vx(;cfQ;h|Vx&7jJQ*qYyJ+ekdGECOxBsSX9(LNXnhGJ4yT zbdA*QDPu`xo2t~{2t?+MyzYh4-5x~9Vp zvzE=INpbF|ER$ah>E8qk64SAY_qgcO@jmY9_y9vXKEy|?ijMmj)$uVtVJ}zW2n2eh z-8~JT3M6XzGwv9Ri-vP>qmD^4<*K(y%a$E|!nRFkENkTRCR6trKG*RDzSQv*mUVoM zZv=MLqESUG^YP-`0*M6n)iNlmo&8%X&jgcaxH+na3S@1YOGmP3+@>BXuU`q?n@WLf@(3|e;HbVzk1Hc>^iTeeEg6*QKXOq=cvR#W@`7>3;3 zMq`JpVg@=kdR%$8kr_6z#*$&8egb z#HyyMy#0zCL9fZZP9Du>`TFsLS6+|hvRO}XtPh)U55KMKF9i5wYx08|kbTI#Lu%a% zo$JGhaqQ!c&ChQg=brc)M7;kY0`bSFyS9e>qx3~`KgUsWU*YWl=k{vcCBi7F06A_aVHQ0iJgA_EA;9RX^r1 zmT;1L0;hPNqIiNm8b)?ML8FG#|ER*hf>A#g1Ds{f1NA@1v8*B|$|@4@u?5Z)Ev0~@ zWys4|XQlnAGW$@`ehg=6C95z)Hd)awFO^*azoA{_wSOJE*ib4f-c%T>g4!KkY+EN5Hz);2%WiaZl}QOYdhOn|A&x%J2nHg@=;B z@_*3<=B7LQ-W{qQ_qhHq$)24*(UHMAU!VwXm!D%B@qz3=Tl1_i+Gd^CnpH;qn P8Su&@@f7%72DkVCTF-+6 diff --git a/out/test/main/GrammarCompileTest.class b/out/test/main/GrammarCompileTest.class deleted file mode 100644 index 51bbd479ad00843ddc19c932197d8188ebb0d24c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3952 zcmb_f`Bxj)75*Lw%^+lBe4}apuy6NJQ{%s zrdygOY14gQlkQ9Gwn-CkLX!T{lb+MRsVAr38;vlVV)vY~%)9r#d+)pVyZ5~}^Y0Jd zehrSCd|t;Fl=2rF@g;m&QO`#3 z6+EZot2&-n{0r*wqK>cW__~IdBIr^venXAlRF4(pvWIa@FVuA~btb)8`l`KX*Xxolw`qKhCh8=f0Ia6l#$spkE zYT3({mwU2MbX}KRy zq9?HT+$K1?6b4az976(!?|~)rR*7`lWb!wINl<5^)wdP)ldbWbuqzvnhGKEbR;zi`P;arHbXstdEi33P)?IGVD<~ zCEbe4MnC?`j+<4Gy`mn!Vm~TCSon?Yt zd(ySpRkJdsFgsLBam=|UiC05T=JSp~UCts?l(c4OGfs|kA?~4h4yJ9JjB3iVvtv1v zPUCT+WE=BN*(m0vS(1jDGdxaqBo=&+iwikxF%iY@@dpimjN(uDa}=-QmWJC=`~|PD z$1V<(TL)&_*)dO;TEGD85}!vK8P|>39SOl-i?JjUAFQJi@Q#3V54$4^hWVI{vO2} zcvIljU}v%oyYf9UMvqvZLHh1SSIc4~e!C&1xvVjf&&6v}RbXoBiv2t>u(f zD#z0^XIeMUb9^S}loLF2j@0VZ;P~gWzQOW590L%dxP!MeydA{~-eC_1 z;_fKkReW>6PgwS>nYXe$&1!hAhRh3K^KrOt7e6&QBQxA22mStV3s&-Jo0X+r+ zf!*=V7m2#^+T-IjPwCZju1{$`5x)<`@vT>(?Z)=)yWe#+Gn=g(%x$$JPzrvOtwqx< z$<@e9XI-aIy-Sa85k=xYl3Is%YQE%2-qQ6>nW*os&@9tMdd8dGjWffPT*y2Ee(-iYaCa@=~A%5-n(q1F!bi^a2!gTr(FurJhbo^-ULfG6<@asr>EalJCGi(n5z6uB#?OE05-xFZ&N6Ac|J z2&ZFO=w0aP`V};$R}e`z1YA?PDvzdP+m^9CwT$LeI<$gyGdrp?%V?o#EL|VlNv+r} zs_*9io+a$9th24^Z{O+~t?AhQWgPIml0K;DWgJ>(w&Sju7KBFC2iBM!_UVQdP;U5i z*r(gJa`%ynyVytX;7G8}>p0r6ga?<&CSKJQqfw-<=)c;FijIt2B<7r$XrTXVGM}bdQyG1<9d5yAv#d?N26cDk;E_8D2 zW$lkM^T&G|S{n$*6Ri!cAr9+sQW6DOthYD30jt*VDp<6S^(nsp4o)a$AYe`^=2Vr5 z4gMdT+}$jr*u}Kk2+UEIp`FDzh88@8{pf_jufKKz_XvOc`5k)-J-C9$FwL($50CSM zvLDak1YX7fZs8=}qQ?8&t7_wo(%UHv`k;rYRiy}FP^NnP6KR%&XC?kYzbq41e+T1! cnOgWp@EOWNjN~@1;