Implementation ANTLR
This commit is contained in:
@@ -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 // <entity> list.
|
||||
bloc [TurtleAST parent]:
|
||||
s=sujet listvc[parent] P moreBloc[parent] // <entity> list.
|
||||
{$parent.addSujet($s.val);}
|
||||
;
|
||||
sujet : LC entity RC //<entity>
|
||||
;
|
||||
listvc : vc more //<verbe> (;<verbe>)*
|
||||
;
|
||||
more : SEMI listvc // ; <verbe>*
|
||||
moreBloc [TurtleAST parent] : bloc[parent]
|
||||
|
|
||||
;
|
||||
vc : LC verbe RC listc //REvoir avec un arbre car in géné avec listvc < <verbe> com >
|
||||
sujet returns[String val]:
|
||||
LC en=entity RC //<entity>
|
||||
{$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] //<verbe> (;<verbe>)*
|
||||
;
|
||||
morec : V listc //correction : listc au lieux de comp
|
||||
more[TurtleAST parent] :SEMI listvc[parent] // ; <verbe>*
|
||||
|
|
||||
;
|
||||
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 //<ID>
|
||||
| G ID G //"ID"
|
||||
comp[TurtleAST parent] :
|
||||
LC i=ID RC //<ID>
|
||||
{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]:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user