From 47733e66783bb52d7dc42dbfb1899bd34b06c46c Mon Sep 17 00:00:00 2001 From: Pablo Ramos Criado Date: Tue, 23 Oct 2012 11:46:04 +0200 Subject: [PATCH 01/25] Ciao warnings --- src/grammar/Derivation.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/grammar/Derivation.java b/src/grammar/Derivation.java index fcb71d3..4f330b3 100644 --- a/src/grammar/Derivation.java +++ b/src/grammar/Derivation.java @@ -240,19 +240,10 @@ public Derivation mutate() throws GrammarException { int pos = rand.nextInt(NT.size()); Position mPoint = NT.get(pos); Element symbol = ((Element) mPoint.get("Element")); -// System.out.print("Mutation node: "+symbol.getSymbol()+" -> "); - Production prod = (Production) mPoint.get( "Production" ); - ArrayList E = prod.getRight(); -// for (Element e:E){ -// System.out.print(" "+e.getSymbol()); -// } -// System.out.println(); Tree subtree = new NodeTree(); subtree = this.getMaxRandomDerivation( subtree, dCopy.depthBackwards(mPoint)+1, symbol, null ); -// System.out.println("New branch: "+new Derivation(grammar, maxDepth, subtree).getWord()); - copy.replaceSubtree(mPoint, subtree); dCopy.setTree(copy); dCopy.setMap(Trees.updateMap(copy)); From c5bc38437256189f3fcb91d2c30951617dee7410 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Criado Date: Tue, 23 Oct 2012 12:09:41 +0200 Subject: [PATCH 02/25] test out --- .classpath | 17 +++++---- bin/grammar/Derivation.class | Bin 15394 -> 15288 bytes bin/grammar/Element.class | Bin 1546 -> 1546 bytes bin/grammar/Elements.class | Bin 3064 -> 3064 bytes bin/grammar/Grammar.class | Bin 10793 -> 10793 bytes bin/grammar/GrammarException.class | Bin 414 -> 414 bytes bin/grammar/NonTerminal.class | Bin 410 -> 410 bytes bin/grammar/Production.class | Bin 4813 -> 4813 bytes bin/grammar/Productions.class | Bin 1872 -> 1872 bytes bin/grammar/Terminal.class | Bin 438 -> 438 bytes bin/grammar/util/Trees.class | Bin 7885 -> 7885 bytes bin/tests/MutationTest.class | Bin 1579 -> 0 bytes src/tests/MutationTest.java | 56 ----------------------------- 13 files changed, 8 insertions(+), 65 deletions(-) delete mode 100644 bin/tests/MutationTest.class delete mode 100644 src/tests/MutationTest.java diff --git a/.classpath b/.classpath index 1191e52..0cb6245 100644 --- a/.classpath +++ b/.classpath @@ -1,9 +1,8 @@ - - - - - - - - - + + + + + + + + diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index 6eaae76356c31708610c18f3e263e7bf10192e71..26439e64408aa1ab513bd629809235422a49086b 100644 GIT binary patch delta 5333 zcmbVQ33OCdw%z-_q$;UYDkPOk@{#}v8GwukBtQjFgn&pGLZkpG0MMDA>~VB)8GT$mjcu-swuwZmndJ-03#-bjD+=$dtF5fA za4-Rhb|w>Ti~})k91iMCb)pqp8*wr1+v;rVWEwUTj%wecx}j5M`li;&9JX^ZgPF!% zF)oMtMR`bQH>YvlD;eEktMI zh)p*l;#%8ob+Rw}8M$%&{QaFAfXjrl!dExEvSLPE-)X}>Xvy9RG`sxaFhe&I45Fg6D6GBMCohot(4xZ|+*f zr;UjTBWxR-+{kB*eFRfxz)}s%_=Hu3WrJj>LiN3^4U(lfYvg2 zj@eXI9l>ql(eRp@y5PheW`B|i{!S-89E z$Mz>DPxDPz#G-U7j=kk<`WZKHJ)P z-YC?w!bU~$ed8{@xYdVd2>O`_f8=C1Ki<1hzmo&|A`JZyfl|a_01|NI2T@^ZGHhN-?EI1cKP>Xq@Y!Mb<85Zu{nc7qN*NBQI;lf&(x=yBTKmj(Q zJD!(mo5a?wV&4m5Q$0ptCnjN+D1K3t?h!Qs_|b@!Xo7(QqUDf`JS@G(a1zJyE>7UG z$p48`_!56)Hcqn;Z?YTS<{-So;W*22ZSXFAc%O4{flKfKSKtbt!H3)~@4dLX_qT1A zF>(^Z5h=v5-f*S+(wk5-rU7%k5jlE9o^ETP7B*S8vjP3R5xKfek1)2UxAFIu1P4A9 za6Usa{w832flj!F9%4%$Tt^wc5@f%I4}V8BzQJ<*6Tic^cpU!{EWXDWnLR$Zs-Qnk zz9L{S3N}!5&7o7;lxUpAXjwrMy;DTjpaMhAa-nJH(j zyYWWuZkep%E_rqq>p;605+S)9iC8+|7RS@XyY49?Kxw(SdWLYv5+6`nN+%D@f!HyMnG}x&F1>XvE zG@05Mm6^$8W;@|{XI46IG77RX26vQkIhJV& zG718IGk!L9mO!v26w)Ux!jQ677j_i`<79l8e7i&1i;Rs~$x+28;c9|=jGNt!qgk2s z8h_2|?&{fqltVcI7VF`S>}?ceC;0mmN9)c2OT8`uzD)oRn_ssD@R&EI32P*epYpcS zU7qMh4pJDc#{@Xc8&{99dR!wmQmSc-H&%}g@D6j{9nYbU`BCb1>uz(-2qhyLyz#*= zOM^>yH*%zs98S>Vj~GX@CvljO(LOWmt^mgvgWC7;7wa~$P9bi2qp+g6gsCxJk8idj zM-P{xl2U5m*vVpc=4RwtUz*j^+?J@j^!U(PQKnhr>*3O4J?;P}jjrcP69}(8*L+4a z*KDM2H=;W9O`IGyc^{_~C+m@(WRET*t%m7_uS3V?zEs`eN%f@2{7~Q44q3&>Yl) zkJJ-GzUU4;>6dOb;yw+b#wR-Fr3aOG6N6e?R`e#BVGw_38oN3b7iKr%-bz7 zSK0;bGG|Ntr5t1*9WBqnP`pDn$KgofNGXL;$mSRnaV&0;5q&uc{aKEooQlz$hDuIH zH7l@~v#?4ut!Fhhu@-wd4+ppaC%6cgxCEc_Zd~U*_=!vXjNo#n@?N&*BHqM@*pm;l zl#g-6xnd{lWXJn(>z@xGezs2WxS$hA;&5Ep79&S?| zxm^|UKa`g{RWJTtm2#K5jeFD(zNAL*Wi^4Xs4Ds!)O_w!E4W`h%0uc&9#(64MD5_K zs)@(cF&Tk;+t9$&uIC4OB>9$wMl$Oo5i!*LY~te z05%T0WlVV`6G+?TTzR9k~kraElG+ASwtsA8&@- z+@gYzTbq>yxkw?%O(}%S6QVkZ%YQZFLPKx~qVa?{WMLpPVnePyfq0YurHbMWXZ|>r z88h;W<@s!Wi99dnd-XCq)-?Yr%xzBR513__-hzU>%-KJ}73>w_Ud=WC3voYbEG_so zac?dN5x4s(v*erk*lBKs!wh%fO+uKZg=O7Z2=9N8;1(e~rzbi{cv&VzkN=tVjGx*U z89x@LG!vRz$jD1ezq}%n3*r1- z2?x?t)lUkiopfd3YS$Z zK2&kIrsDCPN~B9Av7OSHqmr4gQrTIxWp|av-qTe(4p12!rLs6lWwTm!;3AdJWvYPp zsY0$+ow!wX7Aol?tWhLvQOu*N8_%llyed?4O_lIl)k`VWTe;NDDp~bW8R}NmL-kcd zRkRu{z2nqC~%_aDkTlE&h zt=M7JTPvZgnO42UO5wlBwK6x3tI@=DBDt+H%8{Z_rbEFpG93yQkLi$AGL|VKIbnR= z`9-cbHgzfVKhuOxa=3V|0bM=e0Tcz$JHSmV!ub+IUG>tH8@DpFg*OBc2%sc5OvVJb z-8|^!HVWONIIM}g9Kplp1<*lHM9+P52?q+ zmc{;?9Y%H6RR1%&{nyJgAmiO^3@{*FEr$!QO}Cvu`xaeIVz_P#@L;pO!D)YxX{KGe zm}S|l6-U-1IX~FuiTtIpk@Q3wkwvj?)6bx{`GZ3~8u>-Z{*l7(6W~%45vwK%-%UXm zH5J8b8pbLgCaW2!QkAGvGqFU?!Xxs2N>$@oRfA1xF7~Th98`5Us}|x@wFqCU#j^b@ zVYs@RY3d$!RLfYbmb0h2m&4>eR@HHux}P)E1DvB)veuy<;u2LO_3@~2rYO;WSSXpO zV+@brufnF!3jMw+l7=eD+@q2#VZwy9Rsw~~sedd!7fQBap_KbE>9yl5?zghk&K^j& z+9Iv=GS9P?ULJ4OE0SiNr8mQI14|HLH>MYF%s$b4Lr@>dY7XJrWE0wxax~s;UKQLt z*}&J0oNift(!Dk-L;j!1!`;TJZUsy?4s}b(IT&C_-TxI>gGCAc2U_AdB(D)45^HZ% z>NfLAVx7U{@{|Io4HDjsvR%IbkJ^S*wH?`NCrZ?d7@&4zsM>>(>LtvOcddFwLL9(v zR0CG4M(j}gu}?Kgcn{!pbr|Q=5nNKQ;<~)QQw@HGspGV%6T*i9CaP1`rD1vyuF#1j z8(%RP(4lxO6woEu5DMr3oCyVVA8xh67!Hrz|4*^K1ax>yKv&Cs-Q4BvIRA@)CIV(e zEyY$uEyX-;6!vH%e@_hQq3a2dtDyst<_*cb9<7z1{DUIB%X+ky=f)oGR5=VI3lK^8?sETAD5r>u#K|Zi~UtWSbWx^*-X&d9+a%k*+QwS6xPT^?`)siiG4M zCaRAuM1wcP$st7JQN~L`#`0etZk1E(2LeGZax8o_`75Heb#MyHurl7fFk2IZGHKIFN#tQ;UrA>FKmXk6kU_FB$YDrXwx^l8gsq#ekj_vxDESA;+yRuFK>lK?=GA`# D64F_sq1d0`t9B35=uj*Zh)Sz5DKR?z!JN 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 delta 17 YcmeC;>Ehuy^>5cc1_lP>jT}sD06AI(X#fBK diff --git a/bin/grammar/Elements.class b/bin/grammar/Elements.class index bb4f264b88c3d4b8127dc462e7e02ed5ecf916ab..5083285139ea6b77073aeac3e1ba1c3ad0be4b57 100644 GIT binary patch delta 17 Zcmew%{zIJO)W2Q(7#J9gHgbI61^`Mx2TcF~ delta 17 Zcmew%{zIJO)W2Q(7#J9gH*$R71^`M$2TlM0 diff --git a/bin/grammar/Grammar.class b/bin/grammar/Grammar.class index 1b5d52348587b8a1fad352cfa9c1a8577bc2e66d..023502b47cae24f276bc3660cf021c99b4c8e57b 100644 GIT binary patch delta 17 ZcmZ1(vND9@)W2Q(7#J9gHgYIx0RTn^26+Gg delta 17 ZcmZ1(vND9@)W2Q(7#J9gH*zRy0RTn}26_Mh diff --git a/bin/grammar/GrammarException.class b/bin/grammar/GrammarException.class index d289fd83d9a0188ccf7e8389e7aa2c16ea2178d2..af854a3bfaf6917b252bbe71b739b2726ef709e1 100644 GIT binary patch delta 17 ZcmbQoJdc^<)W2Q(7#J9gHgZg31OPkg1`PlJ delta 17 ZcmbQoJdc^<)W2Q(7#J9gH*!p41OPkl1`YrK diff --git a/bin/grammar/NonTerminal.class b/bin/grammar/NonTerminal.class index cd83e092ffd72e62335d46da184b68c28a48f1c1..cff8d81e4e93552526041092164fb25783ee0784 100644 GIT binary patch delta 17 ZcmbQmJd2s*)W2Q(7#J9gHgZg21OPi?1_1y7 delta 17 ZcmbQmJd2s*)W2Q(7#J9gH*!p31OPi{1_A&8 diff --git a/bin/grammar/Production.class b/bin/grammar/Production.class index f14e36c4be72cb59b70aa60f0489a1098bbc6756..a9eb6be676a3608e37c6cfe107b484a03895327e 100644 GIT binary patch delta 17 ZcmX@BdRCR=)W2Q(7#J9gHgX&l0suxe2JZj> delta 17 ZcmX@BdRCR=)W2Q(7#J9gH*y>m0suxj2Jip? diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class index 9f409cedbb5991ea74f81d453dd0029df870d139..c4b03c4b6f6b63021cd812041a00afa826bc3580 100644 GIT binary patch delta 17 Zcmcb>cY%-N)W2Q(7#J9gHgb5d0{}wa20s7* delta 17 Zcmcb>cY%-N)W2Q(7#J9gH*$Ee0{}wf20#D+ diff --git a/bin/grammar/Terminal.class b/bin/grammar/Terminal.class index 224bfa6343ce0b7b38d6f9973f2588c313f0d7d3..7674ef849791ae8ff03f5eca9c389e2aaeb1e60c 100644 GIT binary patch delta 17 ZcmdnSyp5UT)W2Q(7#J9gHgc?E1OPu822}t6 delta 17 ZcmdnSyp5UT)W2Q(7#J9gH*&0F1OPuD237z7 diff --git a/bin/grammar/util/Trees.class b/bin/grammar/util/Trees.class index 98416ac3acfc6f8e5d25a5b577d280faaeb58ca4..b79d71397dee68b13ae77c37f1fabc4de057c24c 100644 GIT binary patch delta 24 gcmX?Wd)AiY)W2Q(7#J9gHgY(#F)rQg!`3JP0Dr6q)c^nh delta 24 gcmX?Wd)AiY)W2Q(7#J9gH*z?$F>cxH!`3JP0Duw*QkD;ZuN)Vx>t>{2oLa97n!ZjJ1nTeAL3*UY6 zN4S*NuE z;jH_vyiy!_L8Xw}(V!pN=tZA}aZH%FM*9NtgQGHQBvBjJVe#ZTljBk>%P+PgSytR} zy+Ca?{XG?J%e@+RGHzIwwH+CG+U{%`an)-G47r!}qZoo|;}=Ex?`#HKX&t#C>m9g( ziV9RDW3{?j^mQ)?Ft*hUV$WAQUc=+Tt3eR9o5XX|ZWvXZgC;e0bk7PVa;&t=wx}ZS zu+>ltSxjr$W?Hg!13KCk*0pSNm^a~^>v`$tMyz}rw{V*+44Z8Ka9eXPbe^;|iD+w(LQC#<}P>0!k1Vy@s+?}t9$2>Y!q~B%~nHdfyVvX#xlO)EOiwb zA#9hyJBsAKDlmF+BJMZ6+P;dCSmS}+`JUSM8nFz@YH`ZK3WhB_#J46M3Eb3z%DOC9 zl~WFVKMWeJ@n3M-1NJQTY7HCf_)cJiL|t{Lf<`q~UQp~{3M{-om}^xTmDEp7#p4R^ z$#HH!x324OZERqZOl7^U0tz^hUB9eghY>Yj!4n%#wdTnrnz5($2Iow$O&tF0ZO?=Sry(E1eyBY>&= zDeQcD{}uZ4XGrg6GN%}Nh0$Xq-RTpIy=1(FQQpdN;!ZMSl6b%X^RLn~NZ$~B!??!P zM;PM|7-?f;iuHgV1E1gqk#5pTBk`6A!lcc|xWV_QL`vW@di!X7&Npim^UUkzIux$h z=vh8S`3%|J{GS-*um2Qz_ZZfqF=nvNKQPO37fx`GuceK1j+wTDA!k_G&D=jlQOD}- zzwqD$-=E+y6MyLu*Nxxb{`Qikq)23fRnFozFG!dAGAV=qJ_bpqNNtR?CP-|O1a7eG zS>za>XT~({(OSYhhx8VHWPE_TEoqipO$j^FB;aEUC6YGq0^3|A=&#}#Tc+jiZ3$-( ft-I0^j-u}kQYNzeiY;o`_f$V-2(v?X0?+>ixWi^| diff --git a/src/tests/MutationTest.java b/src/tests/MutationTest.java deleted file mode 100644 index c893f34..0000000 --- a/src/tests/MutationTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package tests; - -import static org.junit.Assert.*; -import jdsl.core.api.Tree; -import grammar.Derivation; -import grammar.Grammar; -import grammar.GrammarException; - -import org.apache.commons.lang3.StringUtils; -import org.junit.Test; - -public class MutationTest { - - private Grammar grammar; - int maxDepth = 100; - - public MutationTest() { - try { - grammar = new Grammar( "Grammars/g4.gr" ); - } - catch (final GrammarException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Test - public void generateANDmutate(){ - Derivation auxD = null, auxD2 = null; - - for (int i = 0; i < 1; i++) { - try { - auxD = new Derivation( grammar, maxDepth ); - } - catch (final GrammarException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.out.println( auxD.getWord() ); - try { - auxD2 = auxD.mutate(); - } - catch (GrammarException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - System.out.println( auxD2.getWord() ); - System.out.println("Mutation distance: "+StringUtils.getLevenshteinDistance( auxD.getWord(), auxD2.getWord())); - - - } - - } - -} From a4909335b9fd61a50006d84f47f68fd7aa814ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9?= Date: Tue, 30 Oct 2012 12:43:02 +0100 Subject: [PATCH 03/25] Programming getFixedDerivation method --- bin/grammar/Derivation.class | Bin 15288 -> 15607 bytes bin/grammar/Element.class | Bin 1546 -> 1546 bytes bin/grammar/Elements.class | Bin 3064 -> 3064 bytes bin/grammar/Grammar.class | Bin 10793 -> 10989 bytes bin/grammar/GrammarException.class | Bin 414 -> 414 bytes bin/grammar/NonTerminal.class | Bin 410 -> 410 bytes bin/grammar/Production.class | Bin 4813 -> 4813 bytes bin/grammar/Productions.class | Bin 1872 -> 2222 bytes bin/grammar/Terminal.class | Bin 438 -> 438 bytes bin/grammar/util/Trees.class | Bin 7885 -> 7885 bytes src/grammar/Derivation.java | 10 ++++++++++ src/grammar/Grammar.java | 7 +++++-- src/grammar/Productions.java | 20 ++++++++++++++++++++ 13 files changed, 35 insertions(+), 2 deletions(-) diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index 26439e64408aa1ab513bd629809235422a49086b..ef9ebd409cb8310fced03af449d1195d19b1f2a4 100644 GIT binary patch delta 6361 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 delta 17 YcmeC;>Ehuy^>5cc1_lPBjT}sD06A3!XaE2J diff --git a/bin/grammar/Elements.class b/bin/grammar/Elements.class index 5083285139ea6b77073aeac3e1ba1c3ad0be4b57..bb4f264b88c3d4b8127dc462e7e02ed5ecf916ab 100644 GIT binary patch delta 17 Zcmew%{zIJO)W2Q(7#J9gH*$R71^`M$2TlM0 delta 17 Zcmew%{zIJO)W2Q(7#J9gHgbI61^`Mx2TcF~ diff --git a/bin/grammar/Grammar.class b/bin/grammar/Grammar.class index 023502b47cae24f276bc3660cf021c99b4c8e57b..e1102cfffcc13b133b6dd611cb7d28a98f956258 100644 GIT binary patch delta 4455 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 E2S{-1%>V!Z diff --git a/bin/grammar/GrammarException.class b/bin/grammar/GrammarException.class index af854a3bfaf6917b252bbe71b739b2726ef709e1..d289fd83d9a0188ccf7e8389e7aa2c16ea2178d2 100644 GIT binary patch delta 17 ZcmbQoJdc^<)W2Q(7#J9gH*!p41OPkl1`YrK delta 17 ZcmbQoJdc^<)W2Q(7#J9gHgZg31OPkg1`PlJ diff --git a/bin/grammar/NonTerminal.class b/bin/grammar/NonTerminal.class index cff8d81e4e93552526041092164fb25783ee0784..cd83e092ffd72e62335d46da184b68c28a48f1c1 100644 GIT binary patch delta 17 ZcmbQmJd2s*)W2Q(7#J9gH*!p31OPi{1_A&8 delta 17 ZcmbQmJd2s*)W2Q(7#J9gHgZg21OPi?1_1y7 diff --git a/bin/grammar/Production.class b/bin/grammar/Production.class index a9eb6be676a3608e37c6cfe107b484a03895327e..f14e36c4be72cb59b70aa60f0489a1098bbc6756 100644 GIT binary patch delta 17 ZcmX@BdRCR=)W2Q(7#J9gH*y>m0suxj2Jip? delta 17 ZcmX@BdRCR=)W2Q(7#J9gHgX&l0suxe2JZj> diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class index c4b03c4b6f6b63021cd812041a00afa826bc3580..0bb267fa02c47c63b94ef721b0c282ce1f7b064e 100644 GIT binary patch delta 383 zcmZXO%}N4s6vco4acpQX(=Z~1Ru$uv23XzM|bI)=43^#Fx4BgE4IcSqdngL1Gyzl-~a#s delta 48 zcmZ1{c!7`W)W2Q(7#J9g7=ku(6|hW}Wo=+&-aL=hg-MW!!5=8W#1OzB3Z?@ATdfL= diff --git a/bin/grammar/Terminal.class b/bin/grammar/Terminal.class index 7674ef849791ae8ff03f5eca9c389e2aaeb1e60c..224bfa6343ce0b7b38d6f9973f2588c313f0d7d3 100644 GIT binary patch delta 17 ZcmdnSyp5UT)W2Q(7#J9gH*&0F1OPuD237z7 delta 17 ZcmdnSyp5UT)W2Q(7#J9gHgc?E1OPu822}t6 diff --git a/bin/grammar/util/Trees.class b/bin/grammar/util/Trees.class index b79d71397dee68b13ae77c37f1fabc4de057c24c..98416ac3acfc6f8e5d25a5b577d280faaeb58ca4 100644 GIT binary patch delta 24 gcmX?Wd)AiY)W2Q(7#J9gH*z?$F>cxH!`3JP0Duw* productions){ + Tree t = new NodeTree(); + + + + return t; + } + public Derivation mutate() throws GrammarException { Tree copy = new NodeTree(); Trees.duplicateTree(this.derivation.root(), this.derivation, copy, null); diff --git a/src/grammar/Grammar.java b/src/grammar/Grammar.java index bd21099..09afd64 100644 --- a/src/grammar/Grammar.java +++ b/src/grammar/Grammar.java @@ -159,7 +159,8 @@ private void grammarParser(BufferedReader file) throws GrammarException { rights.removeAll(Collections.singleton("")); for(String production: rights) { - Production p = new Production(this.idMax++, line); + String aux = leftElement.getSymbol()+" ::="+production; + Production p = new Production(this.idMax++, aux); p.setLeft((NonTerminal) leftElement); List right = new LinkedList(Arrays.asList(production.split(" "))); @@ -292,7 +293,9 @@ private void grammarParser(String path) throws GrammarException{ rights.removeAll(Collections.singleton("")); for(String production: rights) { - Production p = new Production(this.idMax++, line); + String aux = leftElement.getSymbol()+" ::="+production; + Production p = new Production(this.idMax++, aux); + p.setLeft((NonTerminal) leftElement); List right = new LinkedList(Arrays.asList(production.split(" "))); diff --git a/src/grammar/Productions.java b/src/grammar/Productions.java index 2d68d6f..4f70785 100644 --- a/src/grammar/Productions.java +++ b/src/grammar/Productions.java @@ -61,5 +61,25 @@ public ArrayList getProductionsWithRight(Element e) throws GrammarEx } return p; } + + /** + * + * Returns the production whose symbol is specified in a string. Null if none. + * + * @param prod + * the string with the text that specifies the desired production + * + **/ + public Production getThisProduction(String prod){ + Production p = null; + + for (Production it: this.values()) { + if (it.getSymbol().equals( prod )){ + p = it; + } + } + + return p; + } } From 570f52f7da527fb512453c29319579f7182a5c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9?= Date: Tue, 30 Oct 2012 15:44:38 +0100 Subject: [PATCH 04/25] Now you can call Derivation.getFixedIndividual(String productions) --- .classpath | 17 +-- Individuals/1.ind | 67 ++++++++++++ bin/grammar/Derivation.class | Bin 15607 -> 17029 bytes bin/grammar/Productions.class | Bin 2222 -> 2223 bytes bin/grammar/util/FixedIndividualParser.class | Bin 0 -> 1559 bytes src/grammar/Derivation.java | 104 +++++++++++++++++-- src/grammar/Productions.java | 9 +- src/grammar/util/FixedIndividualParser.java | 42 ++++++++ 8 files changed, 220 insertions(+), 19 deletions(-) create mode 100644 Individuals/1.ind create mode 100644 bin/grammar/util/FixedIndividualParser.class create mode 100644 src/grammar/util/FixedIndividualParser.java diff --git a/.classpath b/.classpath index 0cb6245..1862fd9 100644 --- a/.classpath +++ b/.classpath @@ -1,8 +1,9 @@ - - - - - - - - + + + + + + + + + diff --git a/Individuals/1.ind b/Individuals/1.ind new file mode 100644 index 0000000..d0c34ab --- /dev/null +++ b/Individuals/1.ind @@ -0,0 +1,67 @@ +S ::= CARDGAME +CARDGAME ::= GAME $ RANKING $ WIN +//three stages +GAME ::= STAGE : STAGE : STAGE +//stage 1 +STAGE ::= RULES +//two rules +RULES ::= RULE ; RULE +//rule 1.1 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//rule 1.2 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//stage 2 +STAGE ::= RULES +//two rules +RULES ::= RULE ; RULE +//rule 2.1 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//rule 2.2 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//stage 3 +STAGE ::= RULES +//two rules +RULES ::= RULE ; RULE +//rule 3.1 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//rule 3.2 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , lambda , lambda +DIRECTCONSEQUENT ::= playit +//2 RANKS +RANKING ::= COMBINATION , POINTS ; COMBINATION , POINTS +//RANK 1 +COMBINATION ::= NUMBERCOMBINATION +NUMBERCOMBINATION ::= number NUMBER +NUMBER ::= 0 +POINTS ::= ZEROAMOUNT AMOUNT +ZEROAMOUNT ::= 1 +AMOUNT ::= 2 +//RANK 2 +COMBINATION ::= NUMBERCOMBINATION +NUMBERCOMBINATION ::= number NUMBER +NUMBER ::= 1 +POINTS ::= ZEROAMOUNT AMOUNT +ZEROAMOUNT ::= 2 +AMOUNT ::= 3 +//WIN +WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT +ZEROAMOUNT ::= 4 +ZEROAMOUNT ::= 5 +//END \ No newline at end of file diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index ef9ebd409cb8310fced03af449d1195d19b1f2a4..9e954ff85aeae9b6f5edc9eaec2422f3d03e8d89 100644 GIT binary patch literal 17029 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 literal 15607 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 diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class index 0bb267fa02c47c63b94ef721b0c282ce1f7b064e..e05032d0a2e1fc3f03888430ab71f164eb131a2e 100644 GIT binary patch delta 243 zcmW-b&q@Me6vcnv^vS?rsiXxG;UYmsLu6>-vY=HNNdME+SxHeYBHZ>I2Cdtb5e(QO zT=x$43cf+psl`3_+vMS{A>{FtFFCNfjQQLw%dcYDX^*`34jgfbm+BQ2%u&Z?zCzjv37+3jR Qim)c_Qkp}D+<))>0!mjbT>t<8 delta 242 zcmW-Z%}N4M9L0b4I@1Ly8y6ut;7UWLL`XNe2?aOe2rBm7Vpfufi-@*9hrNI+(+CD^ z5v_X&!6)zy)W2@dIh?O){4*Z?U;q391)jg63oB7D+$x-2@E+v*!JwOOzrDT;y5Eky z(!&WFTgpY{dm+g=DMiT|W+I9x-6AzDl&AXSQZtbDuo1kgM)2Qh8rUXhRojP ML1N7#CwqR{0+0bGP5=M^ diff --git a/bin/grammar/util/FixedIndividualParser.class b/bin/grammar/util/FixedIndividualParser.class new file mode 100644 index 0000000000000000000000000000000000000000..f7c078420dd1968e9261f92789e9968d821280a5 GIT binary patch literal 1559 zcmZ`(U2hvj6g^{av(9GQ7&}QrN}5kvJ4xe08@>_(v^2%Vc0(PE%-h&Iakn^LvtC!_ zukgx4UO}R^L?n2u#3O%!e}M$$%=)8_lFE{IcJ7&T&pr3f{`uc;zXQ01uT4Y*mTSH| zI+A{-9k}((p8HHW*@ojjb)B}X?@Pa>d=rL1{E2)jGj-XhWgb?ZsA?c!9J+NSFqI2K zuE*1L^+-ua`P%|xmG=Noh}Jj_nuW% zGjP2|%fv-;4bm}*C`n|tt1drX8z-n$_ z)a%>I9vMv;Jl0I1)KT*V1XC;wTX${^WVl!iWc9neY=-$w+&ncYy-o^TVwL;8=d`O~ zD@Q5~<&`*2o}QWUqFZaopzSkvYGB3)Waq5V-E9-^4U&#PEo>ofA%hQXd<4ziYFAp} zWUV?E~cJihU?k#+OL@DV(vNSj}gzGz%Fleu+YWZ zfBZrQ0}EK@4U6I$8Ro)#liW=pjwEAKyj9ce-Yl*&u5rwR6w-X^)f(2xvO*;rxItx` z+)X0#lB5w6!sJo@E!qUVgLetIML-0%L*ajs&fxpj3AV~zyq`P9<&Eft4n9cibg=s) z#@DI!&NnP!zJq(^{EL@=A0t+{(ZLt%Ka(=X?3J!Y_ZCJ PkSv(U>ZTM4j^N;bB)M#S literal 0 HcmV?d00001 diff --git a/src/grammar/Derivation.java b/src/grammar/Derivation.java index 356d67f..a5922b3 100644 --- a/src/grammar/Derivation.java +++ b/src/grammar/Derivation.java @@ -120,6 +120,36 @@ public Derivation(Grammar g, int maxDepth, Tree t) throws GrammarException { this.setMap(Trees.updateMap(t)); } + public Derivation(Grammar g, int maxDepth, Vector productions) throws GrammarException { + if(g==null){ + throw new GrammarException("The Grammar is NULL."); + } + this.grammar = g; + this.derivation = null; + this.map = null; + this.maxDepth = maxDepth; + this.depth = -1; + + Tree resTree = null; + Map> resMap; + int minimumDepth; + + if(this.grammar == null){ + throw new GrammarException("The Grammar is NULL. "); + } + + minimumDepth = this.grammar.minimumDepth(); + if( minimumDepth > this.maxDepth){ + throw new GrammarException("The maximum global depth given " + this.maxDepth + " is lower than the minimum depth " + minimumDepth ); + } + + resTree = getFixedDerivation(resTree, 0, this.grammar.getAxiom(), null, productions); + resMap = Trees.updateMap(resTree); + + this.setTree(resTree); + this.setMap(resMap); + } + /** * * Returns a new Grammar's Derivation, using the symbol nt as the starting point, that is: the Productions @@ -231,12 +261,74 @@ private Tree getMaxRandomDerivation(Tree t, int currentDepth, Element knot, Posi return t; } - public Tree getFixedDerivation(Vector productions){ - Tree t = new NodeTree(); - - - - return t; + public Tree getFixedDerivation(Tree t, int currentDepth, Element knot, Position parent, Vector productions) throws GrammarException{ + Position pos; + + /* Checking possible errors */ + if(knot == null){ + throw new GrammarException("The start element is NULL"); + } + + if(!(knot instanceof NonTerminal) && !(knot instanceof Terminal)){ + throw new GrammarException("The nodes of the derivation should be a NonTerminal or Terminal"); + } + + if(currentDepth > this.maxDepth){ + throw new GrammarException("There was an error an the max depth was " + "crossed. "); + } + + if(t == null){ + t = new NodeTree(); + } + + if(parent == null){ + pos = t.root(); + }else{ + /* The childs are added at the order that they are at the right side of + * the Production, then theirs rank (rankOfchild) are theirs positions + * in the right side of the Production. + * Take care because ranks starts at 0. */ + if(t.isExternal(parent)){ + /* If father doesnt has childs. */ + pos = t.insertFirstChild(parent, null); + }else{ + /* If father has childs. */ + pos = t.insertLastChild(parent, null); + } + } + + /* Base step. Start Element is a terminal*/ + if(knot instanceof Terminal){ + /* p is the Production that generates the node(Position=node). It's only null for the + * root node. */ + pos.set("Production", null); + /* e is the Element associated to the node (Position=node). */ + pos.set("Element", knot); + } + /* Recursive step */ + else{ + Production prod = this.grammar.getProductions().getThisProduction( productions.remove( 0 )); + System.out.println("Adding production: "+prod.getSymbol()); +// NonTerminal left = prod.getLeft(); + Collection cE = prod.getRight(); + if (prod == null || knot == null) { + throw new GrammarException("The production or element of the position is null"); + } + /* p is the Production of the node(Position=node).*/ + pos.set("Production", prod); + /* e is the Element associated to the node (Position=node). */ + pos.set("Element", knot); + + /* The childs are added at the order that they are at the right side of + * the Production. */ + if(!cE.isEmpty()){ + for(Element ele:cE){ + t=getFixedDerivation(t, currentDepth+1, ele, pos, productions); + } + } + } + + return t; } public Derivation mutate() throws GrammarException { diff --git a/src/grammar/Productions.java b/src/grammar/Productions.java index 4f70785..e1e6581 100644 --- a/src/grammar/Productions.java +++ b/src/grammar/Productions.java @@ -71,15 +71,14 @@ public ArrayList getProductionsWithRight(Element e) throws GrammarEx * **/ public Production getThisProduction(String prod){ - Production p = null; - + for (Production it: this.values()) { - if (it.getSymbol().equals( prod )){ - p = it; + if (it.getSymbol().trim().equals( prod.trim() )){ + return it; } } - return p; + return null; } } diff --git a/src/grammar/util/FixedIndividualParser.java b/src/grammar/util/FixedIndividualParser.java new file mode 100644 index 0000000..b1b9877 --- /dev/null +++ b/src/grammar/util/FixedIndividualParser.java @@ -0,0 +1,42 @@ +package grammar.util; + +import grammar.GrammarException; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.util.Vector; + +public class FixedIndividualParser { + + private FileReader file; + private BufferedReader buffer; + + public FixedIndividualParser(String path) throws GrammarException{ + + try { + file = new FileReader(path); + buffer = new BufferedReader(file); + } catch (FileNotFoundException e) { + throw new GrammarException(e.getMessage()); + } + + } + + public Vector getProductions(){ + Vector res = new Vector(); + + String line; + + try { + while((line = buffer.readLine()) != null) { + if (!line.substring( 0, 2 ).equals( "//" )) res.add( line ); + } + } catch(Exception e){ + e.printStackTrace(); + } + + return res; + } + +} From e1b4e55f52324a2bbb3405c23e5b85cb105c5246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9?= Date: Tue, 30 Oct 2012 16:13:37 +0100 Subject: [PATCH 05/25] New grammar --- Grammars/g4.gr | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Grammars/g4.gr b/Grammars/g4.gr index 2361a19..d8f1e34 100644 --- a/Grammars/g4.gr +++ b/Grammars/g4.gr @@ -1,25 +1,26 @@ #A# S -#N# CARDGAME GAME STAGE RULES END ACTION RULES RULE COMMANDRULE STANDARDRULE DIRECTRULE ANTECEDENT CONSEQUENT DIRECTANTECEDENT DIRECTCONSEQUENT ZEROAMOUNT AMOUNT HAND DECK TABLE WIN POINTS RANKING TOKEN TOKENLOC PLAYER RESTRICTION EXTRARESTRICTION ALLRESTRICTIONS COMBINATION CARDCOMBINATION POINTS CARDNUMBER SUIT NUMBER CARD SUITCOMBINATION NUMBERCOMBINATION PLAYLOCATION FACE COMMAND PLAYERS -#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show +#N# CARDGAME GAME STAGE RULES END ACTION RULES RULE COMMANDRULE STANDARDRULE DIRECTRULE ANTECEDENT CONSEQUENT DIRECTANTECEDENT DIRECTCONSEQUENT ZEROAMOUNT AMOUNT HAND DECK TABLE WIN POINTS RANKING TOKEN TOKENLOC PLAYER RESTRICTION EXTRARESTRICTION ALLRESTRICTIONS COMBINATION CARDCOMBINATION POINTS CARDNUMBER SUIT NUMBER CARD SUITCOMBINATION NUMBERCOMBINATION PLAYLOCATION FACE COMMAND PLAYERS PLAYCOMBINATION +#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show pair three twopair straight flush full poker straightflush win S ::= CARDGAME -CARDGAME ::= GAME $ RANKING $ WIN -GAME ::= STAGE : STAGE : STAGE | STAGE : GAME +CARDGAME ::= GAME $ RANKING $ WIN | GAME $ lambda $ WIN +GAME ::= STAGE : STAGE : STAGE | STAGE : STAGE : GAME | STAGE : GAME STAGE ::= RULES RULES ::= RULE ; RULE ; RULES | RULE ; RULE | RULE ; RULE ; RULE RULE ::= COMMANDRULE | STANDARDRULE | DIRECTRULE COMMANDRULE ::= com _ lambda _ COMMAND STANDARDRULE ::= mandatory _ lambda _ CONSEQUENT | mandatory _ ANTECEDENT _ CONSEQUENT | once _ ANTECEDENT _ CONSEQUENT | ANTECEDENT _ CONSEQUENT DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT | mandatory _ DIRECTANTECEDENT _ DIRECTCONSEQUENT | once _ DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE | show , lambda , lambda +DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE DIRECTCONSEQUENT ::= playit ANTECEDENT ::= tokens , TOKENLOC , RESTRICTION , TOKENLOC | play , PLAYLOCATION , RESTRICTION , PLAYLOCATION | sum , PLAYLOCATION , RESTRICTION , PLAYLOCATION | have , COMBINATION | have , lambda | lambda -CONSEQUENT ::= pifr , DECK * AMOUNT , FACE | pifr , TABLE * AMOUNT , up | puin , DECK * AMOUNT , lambda , FACE | puin , TABLE * AMOUNT , lambda , FACE | puin , TABLE * 1 , ALLRESTRICTIONS , FACE | bet , lambda , lambda | bet , RESTRICTION , TOKENLOC | gain , TOKENLOC | next | done | out | end +CONSEQUENT ::= pifr , DECK * AMOUNT , FACE | pifr , TABLE * AMOUNT , up | puin , DECK * AMOUNT , lambda , FACE | puin , TABLE * AMOUNT , lambda , FACE | puin , TABLE * 1 , ALLRESTRICTIONS , FACE | bet , lambda , lambda | bet , RESTRICTION , TOKENLOC | gain , TOKENLOC | next | done | out | win | end COMMAND ::= deal , PLAYERS , AMOUNT | deal , TABLE , AMOUNT | give , PLAYERS , AMOUNT ZEROAMOUNT RANKING ::= COMBINATION , POINTS ; COMBINATION , POINTS | COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; RANKING -COMBINATION ::= NUMBERCOMBINATION | SUITCOMBINATION | CARDCOMBINATION +COMBINATION ::= NUMBERCOMBINATION | SUITCOMBINATION | CARDCOMBINATION | PLAYCOMBINATION CARDCOMBINATION ::= CARD / CARDCOMBINATION | CARD SUITCOMBINATION ::= suit SUIT / suit SUIT / suit SUIT / suit SUIT | suit SUIT / suit SUIT / suit SUIT | suit SUIT / suit SUIT | suit SUIT / NUMBERCOMBINATION ::= number NUMBER / NUMBERCOMBINATION | number NUMBER +PLAYCOMBINATION ::= pair | three | twopair | straight | flush | full | poker | straightflush CARD ::= card CARDNUMBER CARDNUMBER ::= SUIT NUMBER SUIT ::= H | D | C | S @@ -30,11 +31,11 @@ ALLRESTRICTIONS ::= RESTRICTION | EXTRARESTRICTION FACE ::= up | down AMOUNT ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ZEROAMOUNT ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 -POINTS ::= ZEROAMOUNT AMOUNT +POINTS ::= ZEROAMOUNT ZEROAMOUNT TABLE ::= T0 | T1 DECK ::= D0 HAND ::= H0 | H1 | H2 | allothers | mine PLAYERS ::= HAND | allplayers -PLAYLOCATION ::= HAND | TABLE | HAND + TABLE | AMOUNT ZEROAMOUNT +PLAYLOCATION ::= HAND | TABLE | HAND + TABLE | POINTS TOKENLOC ::= K00 | K01 | K10 | K11 | K20 | K21 | K99 WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT \ No newline at end of file From c870637770bfc5ced23427bb7dd257747e698e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9?= Date: Tue, 30 Oct 2012 16:52:51 +0100 Subject: [PATCH 06/25] Individual added, grammar modified --- Grammars/g4.gr | 6 ++--- Individuals/UNO.ind | 57 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 Individuals/UNO.ind diff --git a/Grammars/g4.gr b/Grammars/g4.gr index d8f1e34..512004b 100644 --- a/Grammars/g4.gr +++ b/Grammars/g4.gr @@ -1,9 +1,9 @@ #A# S #N# CARDGAME GAME STAGE RULES END ACTION RULES RULE COMMANDRULE STANDARDRULE DIRECTRULE ANTECEDENT CONSEQUENT DIRECTANTECEDENT DIRECTCONSEQUENT ZEROAMOUNT AMOUNT HAND DECK TABLE WIN POINTS RANKING TOKEN TOKENLOC PLAYER RESTRICTION EXTRARESTRICTION ALLRESTRICTIONS COMBINATION CARDCOMBINATION POINTS CARDNUMBER SUIT NUMBER CARD SUITCOMBINATION NUMBERCOMBINATION PLAYLOCATION FACE COMMAND PLAYERS PLAYCOMBINATION -#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show pair three twopair straight flush full poker straightflush win +#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show pair three twopair straight flush full poker straightflush win draw S ::= CARDGAME CARDGAME ::= GAME $ RANKING $ WIN | GAME $ lambda $ WIN -GAME ::= STAGE : STAGE : STAGE | STAGE : STAGE : GAME | STAGE : GAME +GAME ::= STAGE : STAGE : STAGE | STAGE : STAGE | STAGE : GAME STAGE ::= RULES RULES ::= RULE ; RULE ; RULES | RULE ; RULE | RULE ; RULE ; RULE RULE ::= COMMANDRULE | STANDARDRULE | DIRECTRULE @@ -12,7 +12,7 @@ STANDARDRULE ::= mandatory _ lambda _ CONSEQUENT | mandatory _ ANTECEDENT _ CONS DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT | mandatory _ DIRECTANTECEDENT _ DIRECTCONSEQUENT | once _ DIRECTANTECEDENT _ DIRECTCONSEQUENT DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE DIRECTCONSEQUENT ::= playit -ANTECEDENT ::= tokens , TOKENLOC , RESTRICTION , TOKENLOC | play , PLAYLOCATION , RESTRICTION , PLAYLOCATION | sum , PLAYLOCATION , RESTRICTION , PLAYLOCATION | have , COMBINATION | have , lambda | lambda +ANTECEDENT ::= draw | tokens , TOKENLOC , RESTRICTION , TOKENLOC | play , PLAYLOCATION , RESTRICTION , PLAYLOCATION | sum , PLAYLOCATION , RESTRICTION , PLAYLOCATION | have , COMBINATION | have , lambda | lambda CONSEQUENT ::= pifr , DECK * AMOUNT , FACE | pifr , TABLE * AMOUNT , up | puin , DECK * AMOUNT , lambda , FACE | puin , TABLE * AMOUNT , lambda , FACE | puin , TABLE * 1 , ALLRESTRICTIONS , FACE | bet , lambda , lambda | bet , RESTRICTION , TOKENLOC | gain , TOKENLOC | next | done | out | win | end COMMAND ::= deal , PLAYERS , AMOUNT | deal , TABLE , AMOUNT | give , PLAYERS , AMOUNT ZEROAMOUNT RANKING ::= COMBINATION , POINTS ; COMBINATION , POINTS | COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; RANKING diff --git a/Individuals/UNO.ind b/Individuals/UNO.ind new file mode 100644 index 0000000..6352aaa --- /dev/null +++ b/Individuals/UNO.ind @@ -0,0 +1,57 @@ +S ::= CARDGAME +CARDGAME ::= GAME $ lambda $ WIN +//2 stages +GAME ::= STAGE : STAGE +//Stage 1, 2 rules +STAGE ::= RULES +RULES ::= RULE ; RULE +//Rule 1.1 +RULE ::= COMMANDRULE +COMMANDRULE ::= com _ lambda _ COMMAND +COMMAND ::= deal , PLAYERS , AMOUNT +PLAYERS ::= allplayers +AMOUNT ::= 7 +//Rule 1.2 +RULE ::= COMMANDRULE +COMMANDRULE ::= com _ lambda _ COMMAND +COMMAND ::= deal , TABLE , AMOUNT +TABLE ::= T0 +AMOUNT ::= 7 +//Stage 2, 4 rules +STAGE ::= RULES +//Rules 1 & 2 +RULES ::= RULE ; RULE ; RULES +//Rule 2.1 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE +ALLRESTRICTIONS ::= EXTRARESTRICTION +EXTRARESTRICTION ::= samesuit +TABLE ::= T0 +DIRECTCONSEQUENT ::= playit +//Rule 2.2 +RULE ::= DIRECTRULE +DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT +DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE +ALLRESTRICTIONS ::= EXTRARESTRICTION +EXTRARESTRICTION ::= samenumber +TABLE ::= T0 +DIRECTCONSEQUENT ::= playit +//Rules 3 & 4 +RULES ::= RULE ; RULE +//Rule 2.3 +RULE ::= STANDARDRULE +STANDARDRULE ::= ANTECEDENT _ CONSEQUENT +ANTECEDENT ::= have , lambda +CONSEQUENT ::= next +//Rule 2.4 +RULE ::= STANDARDRULE +STANDARDRULE ::= ANTECEDENT _ CONSEQUENT +ANTECEDENT ::= draw +CONSEQUENT ::= win +//0 RANKS +//WIN +WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT +ZEROAMOUNT ::= 0 +ZEROAMOUNT ::= 0 +//END \ No newline at end of file From 96419bbba15819b6071f0593402da98ce87640af Mon Sep 17 00:00:00 2001 From: Pablo Ramos Criado Date: Tue, 30 Oct 2012 17:26:50 +0100 Subject: [PATCH 07/25] Fixed Individual Parser --- .classpath | 17 ++-- Grammars/g4.gr | 21 ++-- Individuals/1.ind | 67 ------------ Individuals/UNO.ind | 57 ----------- bin/grammar/Derivation.class | Bin 17029 -> 15288 bytes bin/grammar/Element.class | Bin 1546 -> 1546 bytes bin/grammar/Elements.class | Bin 3064 -> 3064 bytes bin/grammar/Grammar.class | Bin 10989 -> 10793 bytes bin/grammar/GrammarException.class | Bin 414 -> 414 bytes bin/grammar/NonTerminal.class | Bin 410 -> 410 bytes bin/grammar/Production.class | Bin 4813 -> 4813 bytes bin/grammar/Productions.class | Bin 2223 -> 1872 bytes bin/grammar/Terminal.class | Bin 438 -> 438 bytes bin/grammar/util/FixedIndividualParser.class | Bin 1559 -> 0 bytes bin/grammar/util/Trees.class | Bin 7885 -> 7885 bytes src/grammar/Derivation.java | 102 ------------------- src/grammar/Grammar.java | 7 +- src/grammar/Productions.java | 19 ---- src/grammar/util/FixedIndividualParser.java | 42 -------- 19 files changed, 20 insertions(+), 312 deletions(-) delete mode 100644 Individuals/1.ind delete mode 100644 Individuals/UNO.ind delete mode 100644 bin/grammar/util/FixedIndividualParser.class delete mode 100644 src/grammar/util/FixedIndividualParser.java diff --git a/.classpath b/.classpath index 1862fd9..0cb6245 100644 --- a/.classpath +++ b/.classpath @@ -1,9 +1,8 @@ - - - - - - - - - + + + + + + + + diff --git a/Grammars/g4.gr b/Grammars/g4.gr index 512004b..2361a19 100644 --- a/Grammars/g4.gr +++ b/Grammars/g4.gr @@ -1,26 +1,25 @@ #A# S -#N# CARDGAME GAME STAGE RULES END ACTION RULES RULE COMMANDRULE STANDARDRULE DIRECTRULE ANTECEDENT CONSEQUENT DIRECTANTECEDENT DIRECTCONSEQUENT ZEROAMOUNT AMOUNT HAND DECK TABLE WIN POINTS RANKING TOKEN TOKENLOC PLAYER RESTRICTION EXTRARESTRICTION ALLRESTRICTIONS COMBINATION CARDCOMBINATION POINTS CARDNUMBER SUIT NUMBER CARD SUITCOMBINATION NUMBERCOMBINATION PLAYLOCATION FACE COMMAND PLAYERS PLAYCOMBINATION -#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show pair three twopair straight flush full poker straightflush win draw +#N# CARDGAME GAME STAGE RULES END ACTION RULES RULE COMMANDRULE STANDARDRULE DIRECTRULE ANTECEDENT CONSEQUENT DIRECTANTECEDENT DIRECTCONSEQUENT ZEROAMOUNT AMOUNT HAND DECK TABLE WIN POINTS RANKING TOKEN TOKENLOC PLAYER RESTRICTION EXTRARESTRICTION ALLRESTRICTIONS COMBINATION CARDCOMBINATION POINTS CARDNUMBER SUIT NUMBER CARD SUITCOMBINATION NUMBERCOMBINATION PLAYLOCATION FACE COMMAND PLAYERS +#T# card H0 H1 H2 D0 T0 T1 K00 K01 K10 K11 K20 K21 K99 pifr puin : ; $ / , _ * 0 1 2 3 4 5 6 7 8 9 10 11 12 D C S H > < <= >= = + lambda tokens cards mandatory bet gain playing out done end player once players suit number play next have samesuit com samenumber up down sum deal give allplayers allothers mine playit show S ::= CARDGAME -CARDGAME ::= GAME $ RANKING $ WIN | GAME $ lambda $ WIN -GAME ::= STAGE : STAGE : STAGE | STAGE : STAGE | STAGE : GAME +CARDGAME ::= GAME $ RANKING $ WIN +GAME ::= STAGE : STAGE : STAGE | STAGE : GAME STAGE ::= RULES RULES ::= RULE ; RULE ; RULES | RULE ; RULE | RULE ; RULE ; RULE RULE ::= COMMANDRULE | STANDARDRULE | DIRECTRULE COMMANDRULE ::= com _ lambda _ COMMAND STANDARDRULE ::= mandatory _ lambda _ CONSEQUENT | mandatory _ ANTECEDENT _ CONSEQUENT | once _ ANTECEDENT _ CONSEQUENT | ANTECEDENT _ CONSEQUENT DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT | mandatory _ DIRECTANTECEDENT _ DIRECTCONSEQUENT | once _ DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE +DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE | show , lambda , lambda DIRECTCONSEQUENT ::= playit -ANTECEDENT ::= draw | tokens , TOKENLOC , RESTRICTION , TOKENLOC | play , PLAYLOCATION , RESTRICTION , PLAYLOCATION | sum , PLAYLOCATION , RESTRICTION , PLAYLOCATION | have , COMBINATION | have , lambda | lambda -CONSEQUENT ::= pifr , DECK * AMOUNT , FACE | pifr , TABLE * AMOUNT , up | puin , DECK * AMOUNT , lambda , FACE | puin , TABLE * AMOUNT , lambda , FACE | puin , TABLE * 1 , ALLRESTRICTIONS , FACE | bet , lambda , lambda | bet , RESTRICTION , TOKENLOC | gain , TOKENLOC | next | done | out | win | end +ANTECEDENT ::= tokens , TOKENLOC , RESTRICTION , TOKENLOC | play , PLAYLOCATION , RESTRICTION , PLAYLOCATION | sum , PLAYLOCATION , RESTRICTION , PLAYLOCATION | have , COMBINATION | have , lambda | lambda +CONSEQUENT ::= pifr , DECK * AMOUNT , FACE | pifr , TABLE * AMOUNT , up | puin , DECK * AMOUNT , lambda , FACE | puin , TABLE * AMOUNT , lambda , FACE | puin , TABLE * 1 , ALLRESTRICTIONS , FACE | bet , lambda , lambda | bet , RESTRICTION , TOKENLOC | gain , TOKENLOC | next | done | out | end COMMAND ::= deal , PLAYERS , AMOUNT | deal , TABLE , AMOUNT | give , PLAYERS , AMOUNT ZEROAMOUNT RANKING ::= COMBINATION , POINTS ; COMBINATION , POINTS | COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; COMBINATION , POINTS ; RANKING -COMBINATION ::= NUMBERCOMBINATION | SUITCOMBINATION | CARDCOMBINATION | PLAYCOMBINATION +COMBINATION ::= NUMBERCOMBINATION | SUITCOMBINATION | CARDCOMBINATION CARDCOMBINATION ::= CARD / CARDCOMBINATION | CARD SUITCOMBINATION ::= suit SUIT / suit SUIT / suit SUIT / suit SUIT | suit SUIT / suit SUIT / suit SUIT | suit SUIT / suit SUIT | suit SUIT / NUMBERCOMBINATION ::= number NUMBER / NUMBERCOMBINATION | number NUMBER -PLAYCOMBINATION ::= pair | three | twopair | straight | flush | full | poker | straightflush CARD ::= card CARDNUMBER CARDNUMBER ::= SUIT NUMBER SUIT ::= H | D | C | S @@ -31,11 +30,11 @@ ALLRESTRICTIONS ::= RESTRICTION | EXTRARESTRICTION FACE ::= up | down AMOUNT ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ZEROAMOUNT ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 -POINTS ::= ZEROAMOUNT ZEROAMOUNT +POINTS ::= ZEROAMOUNT AMOUNT TABLE ::= T0 | T1 DECK ::= D0 HAND ::= H0 | H1 | H2 | allothers | mine PLAYERS ::= HAND | allplayers -PLAYLOCATION ::= HAND | TABLE | HAND + TABLE | POINTS +PLAYLOCATION ::= HAND | TABLE | HAND + TABLE | AMOUNT ZEROAMOUNT TOKENLOC ::= K00 | K01 | K10 | K11 | K20 | K21 | K99 WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT \ No newline at end of file diff --git a/Individuals/1.ind b/Individuals/1.ind deleted file mode 100644 index d0c34ab..0000000 --- a/Individuals/1.ind +++ /dev/null @@ -1,67 +0,0 @@ -S ::= CARDGAME -CARDGAME ::= GAME $ RANKING $ WIN -//three stages -GAME ::= STAGE : STAGE : STAGE -//stage 1 -STAGE ::= RULES -//two rules -RULES ::= RULE ; RULE -//rule 1.1 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//rule 1.2 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//stage 2 -STAGE ::= RULES -//two rules -RULES ::= RULE ; RULE -//rule 2.1 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//rule 2.2 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//stage 3 -STAGE ::= RULES -//two rules -RULES ::= RULE ; RULE -//rule 3.1 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//rule 3.2 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , lambda , lambda -DIRECTCONSEQUENT ::= playit -//2 RANKS -RANKING ::= COMBINATION , POINTS ; COMBINATION , POINTS -//RANK 1 -COMBINATION ::= NUMBERCOMBINATION -NUMBERCOMBINATION ::= number NUMBER -NUMBER ::= 0 -POINTS ::= ZEROAMOUNT AMOUNT -ZEROAMOUNT ::= 1 -AMOUNT ::= 2 -//RANK 2 -COMBINATION ::= NUMBERCOMBINATION -NUMBERCOMBINATION ::= number NUMBER -NUMBER ::= 1 -POINTS ::= ZEROAMOUNT AMOUNT -ZEROAMOUNT ::= 2 -AMOUNT ::= 3 -//WIN -WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT -ZEROAMOUNT ::= 4 -ZEROAMOUNT ::= 5 -//END \ No newline at end of file diff --git a/Individuals/UNO.ind b/Individuals/UNO.ind deleted file mode 100644 index 6352aaa..0000000 --- a/Individuals/UNO.ind +++ /dev/null @@ -1,57 +0,0 @@ -S ::= CARDGAME -CARDGAME ::= GAME $ lambda $ WIN -//2 stages -GAME ::= STAGE : STAGE -//Stage 1, 2 rules -STAGE ::= RULES -RULES ::= RULE ; RULE -//Rule 1.1 -RULE ::= COMMANDRULE -COMMANDRULE ::= com _ lambda _ COMMAND -COMMAND ::= deal , PLAYERS , AMOUNT -PLAYERS ::= allplayers -AMOUNT ::= 7 -//Rule 1.2 -RULE ::= COMMANDRULE -COMMANDRULE ::= com _ lambda _ COMMAND -COMMAND ::= deal , TABLE , AMOUNT -TABLE ::= T0 -AMOUNT ::= 7 -//Stage 2, 4 rules -STAGE ::= RULES -//Rules 1 & 2 -RULES ::= RULE ; RULE ; RULES -//Rule 2.1 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE -ALLRESTRICTIONS ::= EXTRARESTRICTION -EXTRARESTRICTION ::= samesuit -TABLE ::= T0 -DIRECTCONSEQUENT ::= playit -//Rule 2.2 -RULE ::= DIRECTRULE -DIRECTRULE ::= DIRECTANTECEDENT _ DIRECTCONSEQUENT -DIRECTANTECEDENT ::= show , ALLRESTRICTIONS , TABLE -ALLRESTRICTIONS ::= EXTRARESTRICTION -EXTRARESTRICTION ::= samenumber -TABLE ::= T0 -DIRECTCONSEQUENT ::= playit -//Rules 3 & 4 -RULES ::= RULE ; RULE -//Rule 2.3 -RULE ::= STANDARDRULE -STANDARDRULE ::= ANTECEDENT _ CONSEQUENT -ANTECEDENT ::= have , lambda -CONSEQUENT ::= next -//Rule 2.4 -RULE ::= STANDARDRULE -STANDARDRULE ::= ANTECEDENT _ CONSEQUENT -ANTECEDENT ::= draw -CONSEQUENT ::= win -//0 RANKS -//WIN -WIN ::= tokens * ZEROAMOUNT ; player playing * ZEROAMOUNT -ZEROAMOUNT ::= 0 -ZEROAMOUNT ::= 0 -//END \ No newline at end of file diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index 9e954ff85aeae9b6f5edc9eaec2422f3d03e8d89..26439e64408aa1ab513bd629809235422a49086b 100644 GIT binary patch literal 15288 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 E2P@9Ky#N3J literal 17029 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 diff --git a/bin/grammar/Element.class b/bin/grammar/Element.class index a77b093d57c2aaf95552e489e669cb9ea002c751..644c1dca5589cdeae9ab8ae85ba26f06e27d2236 100644 GIT binary patch delta 17 YcmeC;>Ehuy^>5cc1_lPBjT}sD06A3!XaE2J delta 17 YcmeC;>Ehuy^>5cc1_lP>jT}sD06AI(X#fBK diff --git a/bin/grammar/Elements.class b/bin/grammar/Elements.class index bb4f264b88c3d4b8127dc462e7e02ed5ecf916ab..5083285139ea6b77073aeac3e1ba1c3ad0be4b57 100644 GIT binary patch delta 17 Zcmew%{zIJO)W2Q(7#J9gHgbI61^`Mx2TcF~ delta 17 Zcmew%{zIJO)W2Q(7#J9gH*$R71^`M$2TlM0 diff --git a/bin/grammar/Grammar.class b/bin/grammar/Grammar.class index e1102cfffcc13b133b6dd611cb7d28a98f956258..023502b47cae24f276bc3660cf021c99b4c8e57b 100644 GIT binary patch delta 4239 zcmai1YjjlA75?_UXWn=64#{L@63BxjlOQ2rjU&XRfCx1NF+d}=k|rs{k_3_f#j1m@ zh1%*;y3V3DEL%~F@d4IEnE(+56)h_A@Kp=NS}PDm@QE5C={|QR1DGuPXYQH3_u2b9 z``q(==YBfpu`1`QXSO{Dpp+(bI@9gC4NuFZ_B3}FRy)y!uz_xDk!$Vwv`uced+c3! z*1&c=ClA|896Rx%4KENz$iHbLLIz&Ka)Q03zNYS~hNgNacH(6NuONwFsa@RM%9eEO zHt;I$C)gTVr#3EWTj@j=cH6OskTkuiwz+Z1;`+AwkqcXD8XId`oY;%~HtZuL-%zu> zW^6PCbQssk2 zzBSFDbn?hIj2YyW9`|Yu{c^oKCn3+EQDo;PQ@%k3RQU9p?wNXG18hhD#4UPxQBZV< zVp*DakY>raq)qgYd^TwfCCaP)9tWN3!Q|@Vr1f&7H`{6Lpxx@f$0{H2r^=_2dn$3% zEo!FW&nD@bIM_k7dH z9u!yipsqUUSKV0T595ZUtzj$)qqQ3=o@XfWVf3i1?Syp$4|9TSk1LGl=c#3ww$vJr z2xCWe#Ve=x6@{^jLvmlnC{-$qzpq0Yk2o)n6r$`fUTcR>RZV(bl?YnY*kcLf4fVGZ z{O*e;(ZnyZz-WL1m?00Q?hn=BVZ8|(^jqHtO$UlYR(K>L24N z{Ukbtfu}_>o)CU)7WsHkjKj~wCDyw9VMO%IR_|5j7< zO8)(T(>U}xyomqcL%395@L#qY+>se(5jXc`B0l1T@w{3$j^HT6I>rl}4SN)5ZwzQ} z3}`O{jlk=LJqo2a6vM*qC=_-_%l5*+$AC5;nP*_Pp`4-a?8j^y=9lzi9zS@M1E^F! z<%&kIoe$Q0U;r*ShjrPo2FM=(v!!)N0MDz0W2iZn(>1(rFzK*4`;ev$pcuCE=1zH}KONY2SXf?^e8ph|+;VrlBQq=O5 ztnfbK`lF(V=>Id`szKMuq%yh2mq%~O`@LTI>&ztip|938`JCXZ{TY-g7yFAe`dqgA z%LZp&?N65{{jnO}lx#UC^Mdg>?Qz98)HxhMGY5OD=Mc10ZcoW|<(*eDUG}B8s8(82 z$AtoCJwHyih9^OhZG4ni+ZA1U43lgbl1a9ta+zEkI-8Z_euQyDLn$}bc&sEZ4x) zb30Sc7N)AVn4~@kF+Uy0hvddblz=0YildZ)V{{RY(>3^%7T^TkfRohBcZ@cCPJiIr z#AEo1cJXsBPSF8;ODFIhokpK#!D%fU-)ljf(dP1V0YR%JO@b&*>OZKecmKP761DM{<4WbFi{XkSvQ?xJ)(n>>0xW#|*ht6xq&eJc6&8I-A4 zQkK4$a`ZbXS6@q`^-Ywozd!~0>lD!6ry~7073<&77`>k^5JY2zhf2jb8ZR!T31SLe zC}z_|Vjh)=pVP%5QA0s-3r!TOIp|(07wt4!JdFKf6J0L4XtL<0DdG@K6-Q{AI7U~B zuW1HYmAG48bzWksbP8W{%ZWGX#;6oM&io$Hr?1ZurLUr*Wbom96QNUl2n)p?9;#6q ztCdnJi)o9De5N>j!{jkdD>v24%4us&^|J9Mg-rFb^R`6P%fTBGQ7;E?Ma1UhUfyb| zmsMM*IZXAkao-PwO!=~NE4`+AIrL5ZJ}C8a>Mw9HrCx^qKDL?aJMJWoe7Y>F}rLeGDVPPmrvm#K~9WC3-5lX$DLe>Bu z17UJuId_yP?h8e65#?c?Rl4>G>zAC6lOxQ*{G5!)U}a9$Wy%sI^vbB7oioYw#Q5Hb zR5_bddE`wwzU)|*K8!MzC?cBYWRhvQ{z%ob!2v5w@(RTLFsTw5?^%(FXvn#l*q?R2 z&Lj?(Bku=NQ>3J3*lg4#C+0G(4_+5Dg zCHQt;CliyV?uT&l6I1~Q%>VleO7v>7rZ-y2HsZRF+aW@}pbY=UOPLUZ7xxiF|2$uu9SbRA0Q7r2zJ zM+Fmb3*S3eQax7DLae4mSi^*TAICgMjo3gt2weY89E8b8ggUrRFgDeSrvqwMq_{GtXinV+#R#)c|EaaQ%VWy@| z%%n`ywhx&mF9>`rMZpSwrEV%HEXra^;_pLVUa2~p{Io0S3)4uo_Z6h- z{2eEc739jj1%^Bna8kC+Da5KTSajoOq_x@+1de*YI<>)Mu*8Mn+x-< zxdR&g4r%mzWYb;9qkH(fe+|l5q%L9m6k2O8H^AV*WHtE8O)-~7%(c19oCyrAlwZ#P zFHJ4zXknSVh>F?jP_Su?EDmJTeR6*w)qTM^_OWs)+yA8OdI^n_8w0u2uKw9d&3WVh E2S{-1%>V!Z delta 4455 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 delta 17 ZcmX@BdRCR=)W2Q(7#J9gH*y>m0suxj2Jip? diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class index e05032d0a2e1fc3f03888430ab71f164eb131a2e..c4b03c4b6f6b63021cd812041a00afa826bc3580 100644 GIT binary patch delta 48 zcmZ24c!7`W)W2Q(7#J9g7=ku(6|hX!V{Kq$-n^dGg-MW!!5=8W#1OzB3Z?@AUoQ%; delta 394 zcmZXQO-n*y5QU#tuUxvAWm!T*xF}FFT!@Q^7DlyEOVhqT&BP49FpXLX{RLMAty^XU z7i%a*2ModhC7%sgO0lN|P& zOmvu1tUcnH>oBc&#~%-vBuzGF<(cf=VGFcnIIpB_#Qqjd45GXs+{JCvD)BgX#n@h>OH BRL%eZ diff --git a/bin/grammar/Terminal.class b/bin/grammar/Terminal.class index 224bfa6343ce0b7b38d6f9973f2588c313f0d7d3..7674ef849791ae8ff03f5eca9c389e2aaeb1e60c 100644 GIT binary patch delta 17 ZcmdnSyp5UT)W2Q(7#J9gHgc?E1OPu822}t6 delta 17 ZcmdnSyp5UT)W2Q(7#J9gH*&0F1OPuD237z7 diff --git a/bin/grammar/util/FixedIndividualParser.class b/bin/grammar/util/FixedIndividualParser.class deleted file mode 100644 index f7c078420dd1968e9261f92789e9968d821280a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1559 zcmZ`(U2hvj6g^{av(9GQ7&}QrN}5kvJ4xe08@>_(v^2%Vc0(PE%-h&Iakn^LvtC!_ zukgx4UO}R^L?n2u#3O%!e}M$$%=)8_lFE{IcJ7&T&pr3f{`uc;zXQ01uT4Y*mTSH| zI+A{-9k}((p8HHW*@ojjb)B}X?@Pa>d=rL1{E2)jGj-XhWgb?ZsA?c!9J+NSFqI2K zuE*1L^+-ua`P%|xmG=Noh}Jj_nuW% zGjP2|%fv-;4bm}*C`n|tt1drX8z-n$_ z)a%>I9vMv;Jl0I1)KT*V1XC;wTX${^WVl!iWc9neY=-$w+&ncYy-o^TVwL;8=d`O~ zD@Q5~<&`*2o}QWUqFZaopzSkvYGB3)Waq5V-E9-^4U&#PEo>ofA%hQXd<4ziYFAp} zWUV?E~cJihU?k#+OL@DV(vNSj}gzGz%Fleu+YWZ zfBZrQ0}EK@4U6I$8Ro)#liW=pjwEAKyj9ce-Yl*&u5rwR6w-X^)f(2xvO*;rxItx` z+)X0#lB5w6!sJo@E!qUVgLetIML-0%L*ajs&fxpj3AV~zyq`P9<&Eft4n9cibg=s) z#@DI!&NnP!zJq(^{EL@=A0t+{(ZLt%Ka(=X?3J!Y_ZCJ PkSv(U>ZTM4j^N;bB)M#S diff --git a/bin/grammar/util/Trees.class b/bin/grammar/util/Trees.class index 98416ac3acfc6f8e5d25a5b577d280faaeb58ca4..b79d71397dee68b13ae77c37f1fabc4de057c24c 100644 GIT binary patch delta 24 gcmX?Wd)AiY)W2Q(7#J9gHgY(#F)rQg!`3JP0Dr6q)c^nh delta 24 gcmX?Wd)AiY)W2Q(7#J9gH*z?$F>cxH!`3JP0Duw* productions) throws GrammarException { - if(g==null){ - throw new GrammarException("The Grammar is NULL."); - } - this.grammar = g; - this.derivation = null; - this.map = null; - this.maxDepth = maxDepth; - this.depth = -1; - - Tree resTree = null; - Map> resMap; - int minimumDepth; - - if(this.grammar == null){ - throw new GrammarException("The Grammar is NULL. "); - } - - minimumDepth = this.grammar.minimumDepth(); - if( minimumDepth > this.maxDepth){ - throw new GrammarException("The maximum global depth given " + this.maxDepth + " is lower than the minimum depth " + minimumDepth ); - } - - resTree = getFixedDerivation(resTree, 0, this.grammar.getAxiom(), null, productions); - resMap = Trees.updateMap(resTree); - - this.setTree(resTree); - this.setMap(resMap); - } - /** * * Returns a new Grammar's Derivation, using the symbol nt as the starting point, that is: the Productions @@ -261,76 +229,6 @@ private Tree getMaxRandomDerivation(Tree t, int currentDepth, Element knot, Posi return t; } - public Tree getFixedDerivation(Tree t, int currentDepth, Element knot, Position parent, Vector productions) throws GrammarException{ - Position pos; - - /* Checking possible errors */ - if(knot == null){ - throw new GrammarException("The start element is NULL"); - } - - if(!(knot instanceof NonTerminal) && !(knot instanceof Terminal)){ - throw new GrammarException("The nodes of the derivation should be a NonTerminal or Terminal"); - } - - if(currentDepth > this.maxDepth){ - throw new GrammarException("There was an error an the max depth was " + "crossed. "); - } - - if(t == null){ - t = new NodeTree(); - } - - if(parent == null){ - pos = t.root(); - }else{ - /* The childs are added at the order that they are at the right side of - * the Production, then theirs rank (rankOfchild) are theirs positions - * in the right side of the Production. - * Take care because ranks starts at 0. */ - if(t.isExternal(parent)){ - /* If father doesnt has childs. */ - pos = t.insertFirstChild(parent, null); - }else{ - /* If father has childs. */ - pos = t.insertLastChild(parent, null); - } - } - - /* Base step. Start Element is a terminal*/ - if(knot instanceof Terminal){ - /* p is the Production that generates the node(Position=node). It's only null for the - * root node. */ - pos.set("Production", null); - /* e is the Element associated to the node (Position=node). */ - pos.set("Element", knot); - } - /* Recursive step */ - else{ - Production prod = this.grammar.getProductions().getThisProduction( productions.remove( 0 )); - System.out.println("Adding production: "+prod.getSymbol()); -// NonTerminal left = prod.getLeft(); - Collection cE = prod.getRight(); - if (prod == null || knot == null) { - throw new GrammarException("The production or element of the position is null"); - } - /* p is the Production of the node(Position=node).*/ - pos.set("Production", prod); - /* e is the Element associated to the node (Position=node). */ - pos.set("Element", knot); - - /* The childs are added at the order that they are at the right side of - * the Production. */ - if(!cE.isEmpty()){ - for(Element ele:cE){ - t=getFixedDerivation(t, currentDepth+1, ele, pos, productions); - } - } - } - - return t; - } - public Derivation mutate() throws GrammarException { Tree copy = new NodeTree(); Trees.duplicateTree(this.derivation.root(), this.derivation, copy, null); diff --git a/src/grammar/Grammar.java b/src/grammar/Grammar.java index 09afd64..bd21099 100644 --- a/src/grammar/Grammar.java +++ b/src/grammar/Grammar.java @@ -159,8 +159,7 @@ private void grammarParser(BufferedReader file) throws GrammarException { rights.removeAll(Collections.singleton("")); for(String production: rights) { - String aux = leftElement.getSymbol()+" ::="+production; - Production p = new Production(this.idMax++, aux); + Production p = new Production(this.idMax++, line); p.setLeft((NonTerminal) leftElement); List right = new LinkedList(Arrays.asList(production.split(" "))); @@ -293,9 +292,7 @@ private void grammarParser(String path) throws GrammarException{ rights.removeAll(Collections.singleton("")); for(String production: rights) { - String aux = leftElement.getSymbol()+" ::="+production; - Production p = new Production(this.idMax++, aux); - + Production p = new Production(this.idMax++, line); p.setLeft((NonTerminal) leftElement); List right = new LinkedList(Arrays.asList(production.split(" "))); diff --git a/src/grammar/Productions.java b/src/grammar/Productions.java index e1e6581..2d68d6f 100644 --- a/src/grammar/Productions.java +++ b/src/grammar/Productions.java @@ -61,24 +61,5 @@ public ArrayList getProductionsWithRight(Element e) throws GrammarEx } return p; } - - /** - * - * Returns the production whose symbol is specified in a string. Null if none. - * - * @param prod - * the string with the text that specifies the desired production - * - **/ - public Production getThisProduction(String prod){ - - for (Production it: this.values()) { - if (it.getSymbol().trim().equals( prod.trim() )){ - return it; - } - } - - return null; - } } diff --git a/src/grammar/util/FixedIndividualParser.java b/src/grammar/util/FixedIndividualParser.java deleted file mode 100644 index b1b9877..0000000 --- a/src/grammar/util/FixedIndividualParser.java +++ /dev/null @@ -1,42 +0,0 @@ -package grammar.util; - -import grammar.GrammarException; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.util.Vector; - -public class FixedIndividualParser { - - private FileReader file; - private BufferedReader buffer; - - public FixedIndividualParser(String path) throws GrammarException{ - - try { - file = new FileReader(path); - buffer = new BufferedReader(file); - } catch (FileNotFoundException e) { - throw new GrammarException(e.getMessage()); - } - - } - - public Vector getProductions(){ - Vector res = new Vector(); - - String line; - - try { - while((line = buffer.readLine()) != null) { - if (!line.substring( 0, 2 ).equals( "//" )) res.add( line ); - } - } catch(Exception e){ - e.printStackTrace(); - } - - return res; - } - -} From 6e110e99743820cfaaf7c4a99899830a4583fb64 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Criado Date: Tue, 30 Oct 2012 17:27:56 +0100 Subject: [PATCH 08/25] Fixed individual Parser --- bin/grammar/Derivation.class | Bin 15288 -> 15667 bytes bin/grammar/Element.class | Bin 1546 -> 1546 bytes bin/grammar/Elements.class | Bin 3064 -> 3064 bytes bin/grammar/Grammar.class | Bin 10793 -> 10793 bytes bin/grammar/GrammarException.class | Bin 414 -> 414 bytes bin/grammar/NonTerminal.class | Bin 410 -> 410 bytes bin/grammar/Production.class | Bin 4813 -> 4813 bytes bin/grammar/Productions.class | Bin 1872 -> 1872 bytes bin/grammar/Terminal.class | Bin 438 -> 438 bytes bin/grammar/util/Trees.class | Bin 7885 -> 7886 bytes src/grammar/Derivation.java | 24 ++++++++++++++++++++++++ 11 files changed, 24 insertions(+) diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index 26439e64408aa1ab513bd629809235422a49086b..7c0ed5523fd7a311664f338e6a6aaaa407bd2a03 100644 GIT binary patch delta 463 zcmYjMODKe46g~I*hZ)lh8V&O!!)A(^W%Qq$!U=DH~fGt1pRCvXQbN zj8{pPR?0@+uklJEuZ2ABKN6eo-0z%w?>Tq5Z@%BW^|`tZAf0aJ%vEYEA-c`iTkY%a z@OQSfS9G=ddI)Zr?{LToyUF@1X!#mJ7C7Q`*7=V$qm<4qh@xV>3R)SVG;$2f!n8(SJch(QEbf=*y(yoW#-W8E5t>z6Q6mbQT871|+`PeGI0ISB*)Q6#Dc z=92;_4A9;ftZvn?0e=9~wVoB)Cyae-cr)4&nhO@d%rEf?YhrDPG_auP734 zC}*xlyrZ6bGk)CBfJXkAP)P^4<&-v*&>*|sxX79lyDS3$AL aOf4_=;*U173`K=d;^m;0YP`}1==vM&wrMc{ delta 159 zcmdm7wWFNt)W2Q(7#J9g7@uwA3Y3)KV(?~sz{9}L=mKIr;$dWEe9XvTpfUL)kIrNs zsaQs#%~?{56edgA=qTRb%AlsTg+Xl%P(L$61d!wd(hN-R7&w^TGsrM~oSbfBA#@)k q%>Ehuy^>5cc1_lP>jT}sD06AI(X#fBK delta 17 YcmeC;>Ehuy^>5cc1_lPBjT}sD06A3!XaE2J diff --git a/bin/grammar/Elements.class b/bin/grammar/Elements.class index 5083285139ea6b77073aeac3e1ba1c3ad0be4b57..bb4f264b88c3d4b8127dc462e7e02ed5ecf916ab 100644 GIT binary patch delta 17 Zcmew%{zIJO)W2Q(7#J9gH*$R71^`M$2TlM0 delta 17 Zcmew%{zIJO)W2Q(7#J9gHgbI61^`Mx2TcF~ diff --git a/bin/grammar/Grammar.class b/bin/grammar/Grammar.class index 023502b47cae24f276bc3660cf021c99b4c8e57b..1b5d52348587b8a1fad352cfa9c1a8577bc2e66d 100644 GIT binary patch delta 17 ZcmZ1(vND9@)W2Q(7#J9gH*zRy0RTn}26_Mh delta 17 ZcmZ1(vND9@)W2Q(7#J9gHgYIx0RTn^26+Gg diff --git a/bin/grammar/GrammarException.class b/bin/grammar/GrammarException.class index af854a3bfaf6917b252bbe71b739b2726ef709e1..d289fd83d9a0188ccf7e8389e7aa2c16ea2178d2 100644 GIT binary patch delta 17 ZcmbQoJdc^<)W2Q(7#J9gH*!p41OPkl1`YrK delta 17 ZcmbQoJdc^<)W2Q(7#J9gHgZg31OPkg1`PlJ diff --git a/bin/grammar/NonTerminal.class b/bin/grammar/NonTerminal.class index cff8d81e4e93552526041092164fb25783ee0784..cd83e092ffd72e62335d46da184b68c28a48f1c1 100644 GIT binary patch delta 17 ZcmbQmJd2s*)W2Q(7#J9gH*!p31OPi{1_A&8 delta 17 ZcmbQmJd2s*)W2Q(7#J9gHgZg21OPi?1_1y7 diff --git a/bin/grammar/Production.class b/bin/grammar/Production.class index a9eb6be676a3608e37c6cfe107b484a03895327e..f14e36c4be72cb59b70aa60f0489a1098bbc6756 100644 GIT binary patch delta 17 ZcmX@BdRCR=)W2Q(7#J9gH*y>m0suxj2Jip? delta 17 ZcmX@BdRCR=)W2Q(7#J9gHgX&l0suxe2JZj> diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class index c4b03c4b6f6b63021cd812041a00afa826bc3580..9f409cedbb5991ea74f81d453dd0029df870d139 100644 GIT binary patch delta 17 Zcmcb>cY%-N)W2Q(7#J9gH*$Ee0{}wf20#D+ delta 17 Zcmcb>cY%-N)W2Q(7#J9gHgb5d0{}wa20s7* diff --git a/bin/grammar/Terminal.class b/bin/grammar/Terminal.class index 7674ef849791ae8ff03f5eca9c389e2aaeb1e60c..224bfa6343ce0b7b38d6f9973f2588c313f0d7d3 100644 GIT binary patch delta 17 ZcmdnSyp5UT)W2Q(7#J9gH*&0F1OPuD237z7 delta 17 ZcmdnSyp5UT)W2Q(7#J9gHgc?E1OPu822}t6 diff --git a/bin/grammar/util/Trees.class b/bin/grammar/util/Trees.class index b79d71397dee68b13ae77c37f1fabc4de057c24c..bccb958620d91e4b7782234253f07ad965acf426 100644 GIT binary patch delta 41 xcmX?Wd(M{Q)W2Q(7#J9gH*y%W3E78aq$=d)r=%*R getNonTerminalNodes() throws GrammarException { return nodes; } + /** + * + * As a Derivation is a m-Tree (a Tree where each node has several nodes), the function returns the + * Derivation's terminal nodes from left to right. + * + * @return + * A Collection with the Derivation's nodes. + * + */ + public ArrayList getTerminalNodes() throws GrammarException { + ArrayList nodes = new ArrayList(); + PositionIterator it = derivation.positions(); + + while(it.hasNext()) { + Position p = (Position) it.nextObject(); + Element e = ((Element)p.get("Element")); + if ((e instanceof Terminal) && !e.equals(this.grammar.getAxiom())) { + nodes.add((Terminal) e); + } + } + + return nodes; + } + /** * From f58d1ae50fd93b8fe86d92e5fc2c758f969bd140 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Date: Tue, 22 Jan 2013 12:44:48 +0100 Subject: [PATCH 09/25] Now terminals have values --- src/grammar/Derivation.java | 25 +++++++++++++----------- src/grammar/Terminal.java | 38 ++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/grammar/Derivation.java b/src/grammar/Derivation.java index 16f05e2..1771a98 100644 --- a/src/grammar/Derivation.java +++ b/src/grammar/Derivation.java @@ -184,7 +184,8 @@ private Tree getMaxRandomDerivation(Tree t, int currentDepth, Element knot, Posi * root node. */ pos.set("Production", null); /* e is the Element associated to the node (Position=node). */ - pos.set("Element", knot); + /* a copy of the terminal is introduced to let diferent internal values for each instance */ + pos.set("Element", new Terminal((Terminal) knot)); } /* Recursive step */ else{ @@ -200,7 +201,7 @@ private Tree getMaxRandomDerivation(Tree t, int currentDepth, Element knot, Posi } if(cP_aux.isEmpty()){ - throw new GrammarException("The NonTerminal " + knot.getSymbol() + " doesnt " + "has a Production associated so that " + "1 + Length(Production)<= " + this.grammar.getAxiom().getDepth()); + throw new GrammarException("The NonTerminal " + knot.getSymbol() + " doesnt has a Production associated so that 1 + Length(Production)<= " + this.grammar.getAxiom().getDepth()); } Random rand = new Random(); @@ -270,7 +271,7 @@ public String getWord(){ n = (Position) poi.nextObject(); e = (Element)n.get("Element"); if (e instanceof Terminal){ - res = res.concat(((Element)n.get("Element")).getSymbol()); + res = res.concat(((Element)n.get("Element")).getSymbol() + ""); } } } @@ -750,17 +751,19 @@ public ArrayList getNonTerminalNodes() throws GrammarException { */ public ArrayList getTerminalNodes() throws GrammarException { ArrayList nodes = new ArrayList(); - PositionIterator it = derivation.positions(); - - while(it.hasNext()) { - Position p = (Position) it.nextObject(); - Element e = ((Element)p.get("Element")); - if ((e instanceof Terminal) && !e.equals(this.grammar.getAxiom())) { - nodes.add((Terminal) e); + + if(this.derivation != null){ + PreOrderIterator poi = new PreOrderIterator(this.derivation); + while(poi.hasNext()){ + Position p = (Position) poi.nextObject(); + Element e = (Element) p.get("Element"); + if (e instanceof Terminal){ + nodes.add((Terminal) e); + } } } - return nodes; + } diff --git a/src/grammar/Terminal.java b/src/grammar/Terminal.java index 6c0b744..bcd4446 100644 --- a/src/grammar/Terminal.java +++ b/src/grammar/Terminal.java @@ -8,6 +8,7 @@ public class Terminal extends Element { + private Object value; /** * @@ -23,5 +24,40 @@ public class Terminal extends Element { public Terminal(int id, String symbol) throws GrammarException{ super(id, symbol); this.setDepth(0); + this.value = null; } -} + + + /** + * + * Constructor that receives a terminal to get copied. + * + * @param terminal + * An instance of terminal. + * + **/ + public Terminal(Terminal terminal) throws GrammarException{ + super(terminal.getId(), terminal.getSymbol()); + this.setDepth(0); + this.value = null; + } + + /** + * Set value object + * + * @param object + * value of the termninal + * + */ + public void value(Object value) { this.value = value; } + + + /** + * get value object + * + * @return object + * value of the terminal + * + */ + public Object value() { return this.value; } +} \ No newline at end of file From 3a2ca0baacd6df1a1d7823c70b0e7de19f211760 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Date: Tue, 22 Jan 2013 13:30:42 +0100 Subject: [PATCH 10/25] Mutate bug: The currentDepth given was deeper than real depth --- src/grammar/Derivation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grammar/Derivation.java b/src/grammar/Derivation.java index 1771a98..1769ae8 100644 --- a/src/grammar/Derivation.java +++ b/src/grammar/Derivation.java @@ -243,7 +243,7 @@ public Derivation mutate() throws GrammarException { Element symbol = ((Element) mPoint.get("Element")); Tree subtree = new NodeTree(); - subtree = this.getMaxRandomDerivation( subtree, dCopy.depthBackwards(mPoint)+1, symbol, null ); + subtree = this.getMaxRandomDerivation( subtree, dCopy.depthBackwards(mPoint), symbol, null ); copy.replaceSubtree(mPoint, subtree); dCopy.setTree(copy); From 702862e77ad667d3c06331524b7cc75c82647d02 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Date: Wed, 30 Jan 2013 19:00:38 +0100 Subject: [PATCH 11/25] Ignore bin --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e56e04 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin From 618de90f0c0d7d49e88ad31c9e5bbe31bad4cfd1 Mon Sep 17 00:00:00 2001 From: Pablo Ramos Date: Wed, 30 Jan 2013 19:08:15 +0100 Subject: [PATCH 12/25] a la mierda! No more shit --- bin/grammar/Derivation.class | Bin 15667 -> 15758 bytes bin/grammar/Terminal.class | Bin 438 -> 889 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class index 7c0ed5523fd7a311664f338e6a6aaaa407bd2a03..854e5771542e905a64456fdc33aed74e9b926047 100644 GIT binary patch literal 15758 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 F{{!(YOcnqD literal 15667 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 Date: Sat, 27 Jul 2013 18:04:02 +0200 Subject: [PATCH 13/25] Create LICENSE --- LICENSE | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..71b7f55 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 aturing + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 34a7c7b1218cee4707038c5a03310298d8207db6 Mon Sep 17 00:00:00 2001 From: aturing Date: Sat, 28 Feb 2015 10:21:25 +0100 Subject: [PATCH 14/25] Unused exception --- src/grammar/Derivation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grammar/Derivation.java b/src/grammar/Derivation.java index 1769ae8..45a7d61 100644 --- a/src/grammar/Derivation.java +++ b/src/grammar/Derivation.java @@ -749,7 +749,7 @@ public ArrayList getNonTerminalNodes() throws GrammarException { * A Collection with the Derivation's nodes. * */ - public ArrayList getTerminalNodes() throws GrammarException { + public ArrayList getTerminalNodes() { ArrayList nodes = new ArrayList(); if(this.derivation != null){ From 18f109cacfc87a68bcf7c610725bd4de5e796a39 Mon Sep 17 00:00:00 2001 From: aturing Date: Sat, 28 Feb 2015 11:47:18 +0100 Subject: [PATCH 15/25] Delete Derivation.class --- bin/grammar/Derivation.class | Bin 15758 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Derivation.class diff --git a/bin/grammar/Derivation.class b/bin/grammar/Derivation.class deleted file mode 100644 index 854e5771542e905a64456fdc33aed74e9b926047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15758 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 F{{!(YOcnqD From 070693074bb2f8050aa7b28da54699a960252431 Mon Sep 17 00:00:00 2001 From: aturing Date: Sat, 28 Feb 2015 11:47:24 +0100 Subject: [PATCH 16/25] Delete Element.class --- bin/grammar/Element.class | Bin 1546 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Element.class diff --git a/bin/grammar/Element.class b/bin/grammar/Element.class deleted file mode 100644 index a77b093d57c2aaf95552e489e669cb9ea002c751..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546 zcmaJ>+int36kTVaKoM$7Db%*=s8xa1qSjmDB^qlD3D$?!Mx!PUaD>r;(P1!NKEp@- z1Rpf9X`+cfn)p%bIx_V- zuLxvvrQy2#wm|&G%PMP4yVZ_jLSVK_PhcDodR8`Da--9%NN3BaSW;tV_2<+bNgEkG1_t@1>@9G4s7Jzk}Jr z@($(-+71>zu`+}MTn`W*I6|aFA|6Es$1#r_bmVy};2?k1ePr&3cw-NboA6GGorc3a zPeJ=lh)@(lM2X0m5`;L$RS_(5S5L+YpE3J^2hHmr@jjmR`Xu~p+PVL5 z_2ut7)u2-*oq9^AtiGn{UemPti(scdr_PMbc408v&Pb=uA{E%YPR9h@o%AMCEwcp? e7~{`~&+#R*dd1m)&2ZlIVNM1d1 Date: Sat, 28 Feb 2015 11:47:36 +0100 Subject: [PATCH 17/25] Delete Elements.class --- bin/grammar/Elements.class | Bin 3064 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Elements.class diff --git a/bin/grammar/Elements.class b/bin/grammar/Elements.class deleted file mode 100644 index bb4f264b88c3d4b8127dc462e7e02ed5ecf916ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 zcma)8+fo!)6kVrhq;Y8Eq5_H-Oc1#`F&Z??h%p3}$VDB*Xs*rB4vllco*n`wuens^ z3(%LmrBdaCsY*0xRpL`pmHb3LBo(txpYEO>AXOGM(|z{dXRo!d!=L{?{T0ATe4#@V zXwEripr9d!b&Rq3Q_Ip#v%5{MPd6@jKH zPgim6d~(`cNeS%E*tw$VRvg+KtJS8}(Q`jpbgi7_q~<14W4u+Dwu`nqMz?+a^8)el z(xR0>3{3_aVCZNO=&d4UOT}!(aY#Ek9=={O%S)t?Kr@VZ~kd5_U@(A2ra6W6b2LnXg!kq@%|B zcqyM}J?&C4)qs8s>KI^(s;;Yg1D!ZT*o zk*;FwiHWtWwIcbj^WGraAng}bUxsRd`ab5gpC27>vYdgT-?#~!!f69%@Rq=?oaIiE z1)FG6%2Ni?ILn@-JhNU{DCHS*5QoPn<2rURm#W7(fxUA}R=4l9+b(y{T%Vds-~`Ug z9(+e&e>67#V*h*s@8W`v34s8g*buUkQ%$(FS~q1s!IvkG!1|Op}2u zh!!teYou0NW1m?9x3Q!nSF`05hyh!sqRzToG4o{!bjLv6o3kaeJmdMSEBg%;&8^Q- zK(h&Jlr8s~l{dYv7U=5>x5E{uv{+Ho7s~ubPsx2JxJvhhnus-3B-|3Jf=djwY~QnF zA=eD7%H~gGN);z-U9jbLZVcA?aoLmt=hG9T+cQ44T@;Z7yIxH=x>J;ulbG^)4JKhXFLCvLWmJ;B?*Nou~uFBl)( z#AFOx({qja&+u1f-s9M&T>Bgef@#cJl@?3Bjla-d26(|!3Z=j zf~u8@Kw8NNl+`SsG8T6FKN!{NQO5H=r7Hb5z4YJbS;o^VraK?th~(SJ|lL_&YL82T?~aU((lC9Hy`N zPsKMFgsiQ%bsqAhHk-ov!NXA=5 Date: Sat, 28 Feb 2015 11:47:40 +0100 Subject: [PATCH 18/25] Delete Grammar.class --- bin/grammar/Grammar.class | Bin 10793 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Grammar.class diff --git a/bin/grammar/Grammar.class b/bin/grammar/Grammar.class deleted file mode 100644 index 1b5d52348587b8a1fad352cfa9c1a8577bc2e66d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10793 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 Date: Sat, 28 Feb 2015 11:47:45 +0100 Subject: [PATCH 19/25] Delete NonTerminal.class --- bin/grammar/NonTerminal.class | Bin 410 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/NonTerminal.class diff --git a/bin/grammar/NonTerminal.class b/bin/grammar/NonTerminal.class deleted file mode 100644 index cd83e092ffd72e62335d46da184b68c28a48f1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmZWk!AiqG6r2}hqp{lBYFqH4Hx)4lj}3x$fab>fSZ7TX%o&*nmfFC8k zrA7+w;qA=6dGlt!zCS(zT%jMpBXn~sibB|ET$-u0g)%}1@CmKDG19V-rXn=1l~L6V zp?4Z5kK$QGT9`bVR92aMcs3)1qnAuRRjM?L0NaE??Qy?a^4BK#x8+=h*g&(1O*D94 zqKq6bi&WaFNVOz%k}?x|CaiM&_tCE&)PiuB)YfachXhZ}2^4eK#cPq4+PVCT%0VaP z(q{5bxjpSQi%TcQ35b)q!)7iXJOs>qW?Kju#oTv_;QZ*~9XoFfJ?wG~`3CwtGQb|A a Date: Sat, 28 Feb 2015 11:47:54 +0100 Subject: [PATCH 20/25] Delete GrammarException.class --- bin/grammar/GrammarException.class | Bin 414 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/GrammarException.class diff --git a/bin/grammar/GrammarException.class b/bin/grammar/GrammarException.class deleted file mode 100644 index d289fd83d9a0188ccf7e8389e7aa2c16ea2178d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmZ`!yH3ME5S%rRjhuu82M3gnj)#PcltF32Lm-PL;QnGx=8%0xXB+WbR7ezj03U_e zI0z&VSM1)*&CTq-f4sf{7-QRoMc7G=$a7)B^Ho26O5{VO3hlxs4DQ9F2s5G6@cV(# zFQri;i=`=9cyn<=pi4q`R_L-4x{5_s%NB<$4-uSWrByX01bfks;k+_Rr<47dV9$zM z>0u2U9e8LHdXduds?HbET#H2}34T;094R=M@fT@Vcd8_eqW_kd@MJ9T|Hcx$c~P50 zo~fmM@O%BE<)GLF@l?D7Mrgs|?lQ8l&Np^In`?)eDRUNg=iu-K-RDNr Date: Sat, 28 Feb 2015 11:47:59 +0100 Subject: [PATCH 21/25] Delete Production.class --- bin/grammar/Production.class | Bin 4813 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Production.class diff --git a/bin/grammar/Production.class b/bin/grammar/Production.class deleted file mode 100644 index f14e36c4be72cb59b70aa60f0489a1098bbc6756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4813 zcmbtYTWlO>75@I+O?I=H*zq-vW2c*>r1sj5Df9w$>Lg9<#^5-1oH}*W0^{|>o^(Cy z%#K4`ZiR*xTJ98Rk`_oQ1j#JZbhWcy_UOkL#L?!**r&ui4=5wZ{J~{7q3^yaQh)&O57h)4`w5A-(XO~j4S*1vE-CU^R?VB&WHTh zn$y$TXGP475tLAE;)I4!n(>cp^ zOKx{g`ZQ;kbIwAsn8kVwiFn_#BAKe5SvT&Pg+~vV^IEML9AF^|!Wy|2O0NybW)sU`Zh7R%7U)y4G2kD5No^us-Tazi0-gK^0`k z$=;$_X6+iT@t_y`vY3IL2E|z$InX8p$3ds zB;@ovC3OXT^Jn49RwmYt9H!2O~&P2m; zA6C9A%=p@AA2|sh(8Ya>EQZAm4OuLrF@yIgblo78aObsoD5g5p)a3{y$1S__pk zC>E7pz(C0P*Gebs>3-I=2_H1@B%Y#x%JySa0t+>i!H0ReU7v|711;>yT*=K@QbGlT zr0U>%OY@83^CQx$oNB287f4F%1dK9?0Ci4e@Ck+6hk0BwROwjGk7@bGcR4q=P}Z%? z3V4>A^JYyaSFqd?B^ZL(quXF8nmeKU44zfE1{njIXe1PnyLA>)58l0&V=P(L1)%|2EX&R-#$If~K8@xM-&X}qTLn#9fQFGYLy~Ko<|u_bcoxh>_Jg(@`C}+22)(okbsZ(ynkP?hSnHXC4w+ z`)Z@J{*}JWDps@C`H~}X53vfX_c8C4RUD&t;l7zz_x%*>E@S;<{ope8|4) zN4cFL{&UFVc^32q%HkaMb6y<8c}(IZomXDxdo;*vEk;SLNTh)~7ub#oKHaEgk*tW$ zx1FR-vcC<D(j2g9z9V4sRkR`*Es_MhGnS!KD;Zk!8G6_M$k5`A8G3gt zL(6376=r&gIbJ41-zP(tnD-UJ{1F-Y@eLSyFWwh0^!QB}dK~YMV`wpsA-yOJeIS;h zCv;ao9CS)f1oIQD^L2CjY@mV<1wGTcvS)tDe)$#W&2OrDCRf!nDJ1G-Za;mK*uP+G zX^hdE#1=gVn3nO(uzxu*asdrJp{NgZQMY#=;k{PzpSvQ_Zl-L2-xBNZi1qg@$se!_ zf5ZU4NAM?&-Jjf}0rot$e-km)LuD^ZcCZegJvMx?YJ1BKSo%3pIa zJ^L}ucbOI$7%l9?)2SB&nm-;64SmY^4d)MyzYxn``Q+cQ0e{zc{rTEb85%9jQBJsM zddo_Pl5?=0#!uo?3>%FR8R%01ly)IC9ABRf3(f=RGn^PJ>;4b={wMkTR~44_3YK;~ zl`8{Grsf%(jUnTlCgbO{hyVt|sa2Vx&kKxX{{?IjaP2-8QucWnT Date: Sat, 28 Feb 2015 11:48:03 +0100 Subject: [PATCH 22/25] Delete Productions.class --- bin/grammar/Productions.class | Bin 1872 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Productions.class diff --git a/bin/grammar/Productions.class b/bin/grammar/Productions.class deleted file mode 100644 index 9f409cedbb5991ea74f81d453dd0029df870d139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1872 zcmcIk%Tg0j5Ir{u4unDEA>a$-p@x72Uw{Oog7^$U!P3&*C5&NkGQr8j(ofMJaH|_A zwaRkk!hdk#kBH|^GMQ0Hl`dRN(zm;B_vzE!_v?=jp8%Z0iiU_lSHY3RqI6Psozi+G z@0umMtRW_Fz&9*fM$xccYWE3rZp!B}Wl6h`y5$;&aRtT`^&7d8ecy13rY)`XXx778aZM|A)p6v@tXXy$C%*V1Z*0{H?H1_s)7_{t zQ8x>;teOQ|x)p~-&i_M}xjLW#a5|IL&_}}eKov(XTH_EnqT?uzkGCXf=)*tu$}dKtp^4fiUJGdQQ=EXOVw zuxbV!=W&6I7|$xwQsa@R_B9M*^s!=aTE~oXjmq_PRo1MIH0GFoLzZ)11)R^v0uh_V z1XC8qAt1JtEub_!IT2H_P%j`TR!!%x6a8|_pX#x_f;AWrfwomw=ASOfEpI0@+z4%G z2&h2spWCov7B&bl5e#Z=bsMfi<}Y0v!WCSMjyfTJIt@84z2E1WmW#JqsyKP$x~blb z0|9&G2}QTS%I|^74f2Ktz<-1qc;YyhD$1{kPhONC-y@z{ya$lY=6_Ri2l00lBGCC8 z=ReSe7`o9$Nv}F#KiYXBZgenEC*>GVT{uW7f*vpAcS^(*VJ|mesy^Zm)ZA`vG%Q)q!hst(Q;Pvje@wZ-lg{Pm8!7`dLNGwAf z>tRe{1XGl+a6J{qB(X4S4Wp7SAwzV{n8js!MR=qY)E V0ZV%k;3-wFm&sQIcWa%$_Y?RXzv2J@ From 199186b01e703f64273943a64f73e6a31f2be33f Mon Sep 17 00:00:00 2001 From: aturing Date: Sat, 28 Feb 2015 11:48:07 +0100 Subject: [PATCH 23/25] Delete Terminal.class --- bin/grammar/Terminal.class | Bin 889 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/Terminal.class diff --git a/bin/grammar/Terminal.class b/bin/grammar/Terminal.class deleted file mode 100644 index ee1d84e263663be156db04dbcda62426fe58d578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmaJ;%Wl&^6g`uN)3`2e(>5s$kCvzHAhLiJMcqI_mMU1J3JX?~bd#V=bp!%KYxGy2Jj5M1}Xv@lSGE0O!}uP3H?Y04b%kI%kFWY zLKUR~^-CGdltAm`LSD*#AfrkD{pdoC(?bE{r62j}kwDw_uH6sP#E&M2&QQQS{ybKn zQa_HS4Xg_6mI7~c`T4a#?NxlHOjL2hLIW!%Xwt$aS^_ImmA)p;IZ?Lf44b^$wor#b z%O`%M-p#_1N>1e{$gIX=84P9O>vPeprRV-s$0!Yyxf!G4p9u($d8S{&Q5-C$Ez$_= z*vrGtQ2V@VVIK!v)Hd8S5AaZ+$^M|A-nO0PRWV{(yhEn5v}?V~#mV_2 zn1gthjMW=oXJ0F0J=GLApouD9of-AESk+i_yF53GlL?E}N8&Vc)9pU_i8Z%+g>_f_ zz}7c5E7;+;#bMwkY4)&+E;eurZFctaL3FUo6Df$`j21E6-a;6I_rUXOJjR^I$aa Date: Sat, 28 Feb 2015 11:48:13 +0100 Subject: [PATCH 24/25] Delete Trees.class --- bin/grammar/util/Trees.class | Bin 7886 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/grammar/util/Trees.class diff --git a/bin/grammar/util/Trees.class b/bin/grammar/util/Trees.class deleted file mode 100644 index bccb958620d91e4b7782234253f07ad965acf426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7886 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 From 11318b9821b2cf0463424ea6124996d1619305fa Mon Sep 17 00:00:00 2001 From: Font Date: Thu, 3 Dec 2015 14:00:37 +0100 Subject: [PATCH 25/25] grammar for mario --- .settings/org.eclipse.jdt.core.prefs | 12 ++++++++++++ Grammars/mariolevel.gr | 27 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 Grammars/mariolevel.gr diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..d17b672 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Grammars/mariolevel.gr b/Grammars/mariolevel.gr new file mode 100644 index 0000000..ecd9bd4 --- /dev/null +++ b/Grammars/mariolevel.gr @@ -0,0 +1,27 @@ +#A# S +#N# LEVEL CHUNKS CHUNK GAP X Y WG WBEFORE WAFTER WG PLATFORM W TUBE BOXES BOXTYPE ENEMIES ENEMY ENEMYTYPE H WC DIGIT DOSCINCO NUMBER TRESNUEVE ZEROCINCO UNOOCHO CINCONUEVE +#T# gap platform tube hill cannon_hill tube_hill coin cannon block_coin block_powerup rock_coin rock_empty koopa goompa ( ) , 0 1 2 3 4 5 6 7 8 9 ; +S ::= LEVEL +LEVEL ::= CHUNKS ; ENEMIES +CHUNKS ::= CHUNK ; CHUNK ; CHUNK ; CHUNK ; CHUNK | CHUNK ; CHUNKS +CHUNK ::= gap ( X , Y , WG , WBEFORE , WAFTER ) | platform ( X , Y , W ) | tube ( X , Y , H , WBEFORE , WAFTER ) | hill ( X , Y , W ) | cannon_hill ( X , Y , H , WBEFORE , WAFTER ) | tube_hill ( X , Y , H , WBEFORE , WAFTER ) | coin ( X , Y , WC ) | cannon ( X , Y , H , WBEFORE , WAFTER ) | BOXES +X ::= 1 CINCONUEVE | UNOOCHO DIGIT | 9 ZEROCINCO +Y ::= 1 | 2 | 3 +WG ::= 2 | 3 | 4 | 5 +W ::= 0 TRESNUEVE | 1 ZEROCINCO +WAFTER ::= DOSCINCO +WBEFORE ::= DOSCINCO +WC ::= DIGIT +H ::= 2 | 3 +BOXES ::= BOXTYPE ( X , Y ) +BOXTYPE ::= block_coin | block_powerup | rock_coin | rock_empty +ENEMIES ::= ENEMY ; ENEMY ; ENEMY ; ENEMY ; ENEMY | ENEMY ; ENEMIES +ENEMY ::= ENEMYTYPE ( X ) +ENEMYTYPE ::= koopa | goompa +NUMBER ::= DIGIT DIGIT +TRESNUEVE ::= 3 | 4 | 5 | 6 | 7 | 8 | 9 +ZEROCINCO ::= 0 | 1 | 2 | 3 | 4 | 5 +UNOOCHO ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 +CINCONUEVE ::= 5 | 6 | 7 | 8 | 9 +DOSCINCO ::= 2 | 3 | 4 | 5 +DIGIT ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 \ No newline at end of file