From 13dbf3882def66c7132b21aea944020017f2d742 Mon Sep 17 00:00:00 2001 From: Rochas Date: Thu, 13 Feb 2025 23:49:35 +0100 Subject: [PATCH] =?UTF-8?q?prettyPrinter=20Ntriple=20+=20fonction=20de=20c?= =?UTF-8?q?r=C3=A9ation=20de=20Ntriple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++----- src/main/antlr/TurtleParser.g | 7 ++-- src/main/java/TP1/TurtleAST.java | 59 ++++++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e4e8ab6..a9a5f75 100644 --- a/README.md +++ b/README.md @@ -19,22 +19,22 @@ entity ::= Entity(String) turtle ::= Turtle(phrase*) phrase ::= Phrase(entity, aff*) - aff.s = entity.val + aff*.s = entity.val aff ::= Aff(entity, complement*) - complement.s = aff.s - complement.v = entity.val + complement*.s = aff.s + complement*.v = entity.val complement ::= Complement(entity) - phrase.c = entity.val + complement.c = entity.val | Complement_Text(String) - phrase.c = String.self + complement.c = String.self entity ::= Entity(String) entity.val=String.self + ``` |TAD |Nom d'attribut |Type | Polarité |----------------|-----------------|---------------------|---------| -|phrase |s |String |H -|aff |s |String |H -|aff |v |String |H +|phrase | |String |H +|aff | |String |H |complement |s |String |H |complement |v |String |H |complement |c |String |H/S diff --git a/src/main/antlr/TurtleParser.g b/src/main/antlr/TurtleParser.g index d5e7311..acd566c 100644 --- a/src/main/antlr/TurtleParser.g +++ b/src/main/antlr/TurtleParser.g @@ -22,6 +22,7 @@ options { } prog : bloc EOF + {$t = new TurtleAST()} ; bloc : sujet listvc P // list. ; @@ -47,6 +48,6 @@ comp : LC ID RC // entity : ID ; -turtle - returns[TurtleAST t]: EOF { $t = null ; }; - +turtle returns[TurtleAST t]: + EOF { $t = null ; } + ; diff --git a/src/main/java/TP1/TurtleAST.java b/src/main/java/TP1/TurtleAST.java index 4ed1e23..300004c 100644 --- a/src/main/java/TP1/TurtleAST.java +++ b/src/main/java/TP1/TurtleAST.java @@ -1,8 +1,63 @@ package TP1; -public class TurtleAST { - public TurtleAST(){ +import java.util.ArrayList; +import java.util.List; +public class TurtleAST { + + sealed interface Ntriple{} + sealed interface Phrase{} + sealed interface Entity{} + + + record NtripleImp(List phrases) implements Ntriple{ + public String toString(){ + String str = ""; + for (PhraseImp phrase : this.phrases) { + str += phrase.toString() + ".\n" ; + } + return str; + } + } + record PhraseImp(EntityImp s, EntityImp v, EntityImp c) implements Phrase{ + public String toString(){ + return s.toString() + " " + v.toString() + " " + c.toString(); + } + } + record EntityImp(String val, Boolean isText) implements Entity{ + public String toString(){ + String str=""; + if(isText) str = "\"" + val + "\""; + else str = "<" + val + ">"; + return str; + } } + String currentSujet; + String currentVerbe; + List listPhrases; + Ntriple ntriple; + public TurtleAST(){ + this.listPhrases = new ArrayList<>(); + } + + public void addSujet(String sujet){ + this.currentSujet=sujet; + } + + public void addVerbe(String verbe){ + this.currentVerbe=verbe; + } + + public void addComplement(String complement, Boolean isText){ + EntityImp s = new EntityImp(currentSujet, false); + EntityImp v = new EntityImp(currentVerbe, false); + EntityImp c = new EntityImp(complement, isText); + PhraseImp phrase = new PhraseImp(s,v,c); + this.listPhrases.add(phrase); + } + + public void finishNtriple(){ + this.ntriple = new NtripleImp(listPhrases); + } }