diff --git a/README.md b/README.md index d48179a..8f86ade 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,12 @@ text ::= Text(entity) entity ::= Entity(String) entity.val=String.self + ``` |TAD |Nom d'attribut |Type | Polarité |----------------|-----------------|---------------------|---------| |phrase | |String |H -|aff | |String |H +|aff |s |String |H |complement |s |String |H |complement |v |String |H |complement |c |String |H/S @@ -48,21 +49,15 @@ entity ::= Entity(String) -|TAD |Nom d'attribut |Type | Polarité -|----------------|-----------------|---------------------|---------| -|turtle |val |list(Phrase) |S -|phrase |sujet_p |String |H -|phrase |affs |list(Aff) |S -|aff |sujet_a |String |H -|aff |vebre_a |String |H -|aff |comps |list(comp) |S -|complement |sujet_c |String |H -|complement |verbe_c |String |H -|complement |comp_c |String |H/S -|Entity |val |String |S - ##Analyse lexicale et syntaxique +#Lexer + +#Parser +Au début on créer un objet TutrleAST, il génère la structure Ntriple. On transmet le TurtleAST aux "phrase" enfants + +#Difficulté : +Nous avons ID qui est un String avec composé de lettres (non accentuées) et de chiffres, commençant obligatoirement par une lettre, et STRING qui peut être n'importe quelle chaîne de caractères (hors "). La grammaire était ambiguë, ce qui provoquait une erreur de compilation de Java diff --git a/src/main/antlr/TurtleParser.g b/src/main/antlr/TurtleParser.g index 79f1bdb..c538b40 100644 --- a/src/main/antlr/TurtleParser.g +++ b/src/main/antlr/TurtleParser.g @@ -23,15 +23,15 @@ options { } turtle returns[TurtleAST t]: {$t = new TurtleAST();} - bloc[t] EOF + phrase[t] EOF {$t.finishNtriple();} ; -bloc [TurtleAST parent]: +phrase [TurtleAST parent]: s=sujet {$parent.addSujet($s.val);} - listvc[parent] P moreBloc[parent] // list. + listvc[parent] P morePhrase[parent] // list. ; -moreBloc [TurtleAST parent] : bloc[parent] +morePhrase [TurtleAST parent] : phrase[parent] | ; sujet returns[String val]: