Files
tp1-rdf/src/main/antlr/TurtleParser.g
2025-02-14 12:43:36 +01:00

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