Implementation ANTLR

This commit is contained in:
Rochas
2025-02-14 00:51:46 +01:00
parent 13dbf3882d
commit 1b5e69870e
2 changed files with 43 additions and 15 deletions

View File

@@ -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]:

View File

@@ -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;
}