72 lines
1.5 KiB
Plaintext
72 lines
1.5 KiB
Plaintext
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] // <entity> list.
|
|
;
|
|
moreBloc [TurtleAST parent] : bloc[parent]
|
|
|
|
|
;
|
|
sujet returns[String val]:
|
|
LC en=entity RC //<entity>
|
|
{$val = $en.val;}
|
|
;
|
|
listvc [TurtleAST parent] :
|
|
vc[parent] more[parent] //<verbe> (;<verbe>)*
|
|
;
|
|
more[TurtleAST parent] :SEMI listvc[parent] // ; <verbe>*
|
|
|
|
|
;
|
|
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 //<ID>
|
|
{parent.addComplement($i.text,false);}
|
|
| G i=STRING G //"STRING"
|
|
{parent.addComplement($i.text,true);}
|
|
;
|
|
entity returns[String val] :
|
|
i=ID
|
|
{$val = $i.text;}
|
|
;
|