diff --git a/src/main/antlr/TurtleParser.g b/src/main/antlr/TurtleParser.g index acd566c..2d1111e 100644 --- a/src/main/antlr/TurtleParser.g +++ b/src/main/antlr/TurtleParser.g @@ -21,31 +21,50 @@ options { @members { } -prog : bloc EOF - {$t = new TurtleAST()} +prog returns[TurtleAST t]: + {$t = new TurtleAST();} + bloc[t] EOF ; -bloc : sujet listvc P // list. +bloc [TurtleAST parent]: + s=sujet listvc[parent] P moreBloc[parent] // list. + {$parent.addSujet($s.val);} ; -sujet : LC entity RC // - ; -listvc : vc more // (;)* - ; -more : SEMI listvc // ; * +moreBloc [TurtleAST parent] : bloc[parent] | ; -vc : LC verbe RC listc //REvoir avec un arbre car in géné avec listvc < com > +sujet returns[String val]: + LC en=entity RC // + {$val = $en.val;} ; -listc : comp morec //on ne peut pas mettre le <> ici car on peut assi mettre des "" +listvc [TurtleAST parent] : + vc[parent] more[parent] // (;)* ; -morec : V listc //correction : listc au lieux de comp +more[TurtleAST parent] :SEMI listvc[parent] // ; * | ; -verbe : ID +vc [TurtleAST parent] : + LC v=verbe RC listc[parent] + {$parent.addVerbe($v.val);} + ; +listc [TurtleAST parent] : + comp[parent] morec[parent] //on ne peut pas mettre le <> ici car on peut assi mettre des "" + ; +morec [TurtleAST parent] : V listc[parent] //correction : listc au lieux de comp + | + ; +verbe returns[String val] : + i=ID + {$val = $i.text;} ; -comp : LC ID RC // - | G ID G //"ID" +comp[TurtleAST parent] : + LC i=ID RC // + {parent.addComplement($i.text,false);} + | G i=ID G //"ID" + {parent.addComplement($i.text,true);} ; -entity : ID +entity returns[String val] : + i=ID + {$val = $i.text;} ; turtle returns[TurtleAST t]: diff --git a/src/main/java/TP1/TurtleAST.java b/src/main/java/TP1/TurtleAST.java index 300004c..a053d9c 100644 --- a/src/main/java/TP1/TurtleAST.java +++ b/src/main/java/TP1/TurtleAST.java @@ -41,6 +41,15 @@ public class TurtleAST { this.listPhrases = new ArrayList<>(); } + public TurtleAST(String sujet, String verbe, String complement, Boolean isText){ + this.listPhrases = new ArrayList<>(); + EntityImp s = new EntityImp(sujet, false); + EntityImp v = new EntityImp(verbe, false); + EntityImp c = new EntityImp(complement, isText); + PhraseImp phrase = new PhraseImp(s,v,c); + this.listPhrases.add(phrase); + } + public void addSujet(String sujet){ this.currentSujet=sujet; }