parser grammar TurtleParser; options { language = Java; tokenVocab = TurtleLexer; k = 1; } @header { package TP1; } // On syntax error, raise exception rather than silently recovery @rulecatch { catch (RecognitionException e) { reportError(e) ; throw(e) ; } } @members { } turtle returns[TurtleAST t]: {$t = new TurtleAST();} bloc[t] EOF {$t.finishNtriple();} ; bloc [TurtleAST parent]: s=sujet {$parent.addSujet($s.val);} listvc[parent] P moreBloc[parent] // list. ; moreBloc [TurtleAST parent] : bloc[parent] | ; sujet returns[String val]: LC en=entity RC // {$val = $en.val;} ; listvc [TurtleAST parent] : vc[parent] more[parent] // (;)* ; more[TurtleAST parent] :SEMI listvc[parent] // ; * | ; vc [TurtleAST parent] : LC v=verbe {$parent.addVerbe($v.val);} RC listc[parent] ; 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[TurtleAST parent] : LC i=ID RC // {parent.addComplement($i.text,false);} | G i=STRING G //"STRING" {parent.addComplement($i.text,true);} ; entity returns[String val] : i=ID {$val = $i.text;} ;