diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..d543f24
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+TP1
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b86273d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..ce1c62c
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..483acf7
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ASD.txt b/ASD.txt
index a243a88..b44694c 100644
--- a/ASD.txt
+++ b/ASD.txt
@@ -20,7 +20,7 @@ turtle ::= Turtle(phrase*)
phrase ::= Phrase(entity, aff*)
aff ::= Aff(entity, complement*)
complement ::= Complement(Entity)
- |Text(String)
+ | Complement_Text(String)
entity ::= Entity(String)
diff --git a/src/main/antlr/TurtleLexer.g b/src/main/antlr/TurtleLexer.g
index 7ed0ee5..4d63436 100644
--- a/src/main/antlr/TurtleLexer.g
+++ b/src/main/antlr/TurtleLexer.g
@@ -12,6 +12,11 @@ options {
}
+entite: '<' ID '>';
+
+
+
// Whitespaces are ignored.
fragment WS: (' ' | '\n' | '\t' | '\r' | '\u000C');
-WSS: WS+ { skip(); };
\ No newline at end of file
+WSS: WS+ { skip(); };
+ID: ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
\ No newline at end of file
diff --git a/src/main/java/TP1/ASD_Turtle.java b/src/main/java/TP1/ASD_Turtle.java
new file mode 100644
index 0000000..1a188ce
--- /dev/null
+++ b/src/main/java/TP1/ASD_Turtle.java
@@ -0,0 +1,55 @@
+package TP1;
+
+import java.util.List;
+
+public class ASD_Turtle implements TurtleASD {
+ sealed interface Turtle{}
+ sealed interface Phrase{}
+ sealed interface Affectation{}
+ sealed interface Complement{}
+ sealed interface Entity{}
+
+ record TurtleImp(List phrases) implements Turtle{}
+ record PhraseImp(EntityImp entity, List affs) implements Phrase{}
+ record AffectationImp(EntityImp entity, List complements) implements Affectation{}
+ record Complement_EntityImp(EntityImp entity) implements Complement{}
+ record Complement_TextImp(String string) implements Complement{}
+ record EntityImp(String string) implements Entity{}
+
+ public void prettyPrinter(TurtleImp t){
+ for (PhraseImp phrase : t.phrases) {
+ prettyPrinter(phrase);
+ }
+ }
+
+ public void prettyPrinter(PhraseImp phrase){
+ System.out.println("< " + phrase.entity + " >");
+ for (AffectationImp affectation : phrase.affs) {
+ prettyPrinter(affectation);
+ }
+ System.out.println(".");
+ }
+ public void prettyPrinter(AffectationImp affectation){
+ System.out.println("< " + affectation.entity + " >");
+ for (int i =0; i < affectation.complements.size(); i++) {
+ prettyPrinter(affectation.complements.get(i));
+ if (i < affectation.complements.size() - 1) {
+ System.out.print(", ");
+ }
+ }
+ System.out.println(";");
+ }
+ public void prettyPrinter(Complement complement){
+ if( complement instanceof Complement_EntityImp ce){
+ System.out.println(" < " + ce.entity + " >");
+ } else if ( complement instanceof Complement_TextImp ct){
+ System.out.println(" \" " + ct.string + " \"");
+ }
+
+
+ }
+ public void prettyPrint(EntityImp entity) {
+ System.out.print(entity.string);
+ }
+
+}
diff --git a/src/main/java/TP1/TurtleASD.java b/src/main/java/TP1/TurtleASD.java
index ce19a99..9bc5b09 100644
--- a/src/main/java/TP1/TurtleASD.java
+++ b/src/main/java/TP1/TurtleASD.java
@@ -1,4 +1,4 @@
package TP1;
-interface TurtleAST {
+interface TurtleASD {
}