diff --git a/README.md b/README.md index c9ef223..7887bbd 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,14 @@ entity ::= Entity(String) ``` -|TAD |Nom d'attribut |Type | Polarité -|----------------|-----------------|---------------------|---------| -|phrase | |String |H -|aff |s |String |H -|complement |s |String |H -|complement |v |String |H -|complement |c |String |H/S -|Entity |val |String |S +|TAD | Nom d'attribut |Type | Polarité +|----------------|------------------|---------------|---------| +|phrase | | | +|aff | s |String |H +|complement | s |String |H +|complement | v |String |H +|complement | c |String |H/S +|Entity | val |String |S @@ -53,7 +53,12 @@ entity ::= Entity(String) ### Lexer +- Dans Lexer, on crée des jetons basés sur tous les caractères spéciaux. Dans ID, on a tous les caractères de a à z en minuscule et mascule, '_', '-' et nombre. +- On veut séparer l'ID et le STRING qui s'utilise avec "" qui a accès à tous les caractères spéciaux comme ç, à, ê,.. . Donc après recherché sur l'internet, on a utilisé ISO/CEI 8859 pour détecter ces caractères. +- Dans ID on n'autorise pas l'espace mais STRING, notre parser a cet accès. + ### Parser + - Au début, on créer un objet TutrleAST, il génère la structure Ntriple. On transmet le TurtleAST aux phrases enfants. - Les phrases ont accès au sujet et l'enregistrent dans le TurtleAST fourni par le parent (il sauvegarde dans une variable currentSujet), les phrases contiennent de faire "descendre" le TurtleAST aux listes enfants (list vc étant simplement une liste de couple verbe complément*) - listvc fait descendre TurtleAST à ses enfants vc (couple verbe complément*) @@ -62,9 +67,14 @@ entity ::= Entity(String) - et récursivement les phrases sont toutes générées, puis elles sont fusionnées à la fin après le EOF pour faire un Ntriple ### 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 +- Au début, nous ne savons pas comment écrire l'ASD de Turtle. +- 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 +### Etat : + +- Projet est écrit par OOP, on n'a pas temps pour implanter PC Observer ( Design Pattern ) +- Projet fonctionne bien avec les 2 tests et AST manuel. ## Compatibilité diff --git a/src/main/antlr/TurtleLexer.g b/src/main/antlr/TurtleLexer.g index 585ece8..9e2197a 100644 --- a/src/main/antlr/TurtleLexer.g +++ b/src/main/antlr/TurtleLexer.g @@ -27,4 +27,4 @@ G: '"' fragment WS: (' ' | '\n' | '\t' | '\r' | '\u000C'); WSS: WS+ { skip(); }; ID: ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'-')*; -STRING: ('a'..'z'|'A'..'Z'|'\u00C0'..'\u00FF')('a'..'z'|'A'..'Z'|'0'..'9'|'\u00C0'..'\u00FF'|'_'|'-'|'&'|' ')* ; \ No newline at end of file +STRING: ('a'..'z'|'A'..'Z'|'0'..'9'|'\u00C0'..'\u00FF')('a'..'z'|'A'..'Z'|'0'..'9'|'\u00C0'..'\u00FF'|'_'|'-'|'&'|' ')* ; \ No newline at end of file diff --git a/src/main/antlr/TurtleParser.g b/src/main/antlr/TurtleParser.g index c538b40..adcfb3c 100644 --- a/src/main/antlr/TurtleParser.g +++ b/src/main/antlr/TurtleParser.g @@ -58,20 +58,19 @@ morec [TurtleAST parent] : V listc[parent] //correction : listc au lieux de comp verbe returns[String val] : enV=entity {$val = $enV.val;} - ; + ; comp[TurtleAST parent] : LC enC=entity RC // {parent.addComplement($enC.val,false);} | G text[parent] G //"STRING" ou "ID" - ; + ; text[TurtleAST parent] : sC=STRING {parent.addComplement($sC.text,true);} |enC2=entity {parent.addComplement($enC2.val,true);} - ; - + ; entity returns[String val] : i=ID {$val = $i.text;} - ; + ; \ No newline at end of file diff --git a/src/main/java/TP1/ASD_Turtle.java b/src/main/java/TP1/ASD_Turtle.java index 2cff98b..701ed13 100644 --- a/src/main/java/TP1/ASD_Turtle.java +++ b/src/main/java/TP1/ASD_Turtle.java @@ -41,7 +41,7 @@ public class ASD_Turtle implements TurtleASD { str += ","; } } - return str; + return str; } } record Complement_EntityImp(EntityImp entity) implements Complement{ diff --git a/src/main/java/TP1/TurtleASD.java b/src/main/java/TP1/TurtleASD.java index 9bc5b09..5b55ee9 100644 --- a/src/main/java/TP1/TurtleASD.java +++ b/src/main/java/TP1/TurtleASD.java @@ -1,4 +1,5 @@ package TP1; interface TurtleASD { + String toString(); }