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