diff --git a/src/main/antlr/.antlr/VSLParser.java b/src/main/antlr/.antlr/VSLParser.java index 49b9618..eaa5a3a 100644 --- a/src/main/antlr/.antlr/VSLParser.java +++ b/src/main/antlr/.antlr/VSLParser.java @@ -108,7 +108,7 @@ public class VSLParser extends Parser { @SuppressWarnings("CheckReturnValue") public static class ProgramContext extends ParserRuleContext { - public Program p; + public ProgramImp p; public FunctionContext func; public TerminalNode EOF() { return getToken(VSLParser.EOF, 0); } public FunctionContext function() { @@ -130,7 +130,7 @@ public class VSLParser extends Parser { ((ProgramContext)_localctx).func = function(); setState(21); match(EOF); - ((ProgramContext)_localctx).p = new Program(((ProgramContext)_localctx).func.out); + ((ProgramContext)_localctx).p = new ProgramImp(((ProgramContext)_localctx).func.out); } } catch (RecognitionException re) { @@ -146,7 +146,7 @@ public class VSLParser extends Parser { @SuppressWarnings("CheckReturnValue") public static class FunctionContext extends ParserRuleContext { - public List out; + public ArrayList out; public TypeContext t; public IdentContext i; public List_instrContext instrs; diff --git a/src/main/antlr/VSLParser.g b/src/main/antlr/VSLParser.g index d9f6331..ccf87aa 100644 --- a/src/main/antlr/VSLParser.g +++ b/src/main/antlr/VSLParser.g @@ -21,14 +21,14 @@ options { } } -program returns [Program p] : +program returns [ProgramImp p] : func=function EOF - {$p = new Program($func.out);} + {$p = new ProgramImp($func.out);} ; -function returns [List out] +function returns [ArrayList out] @init{ SymTable sym_table = new SymTable(); }: diff --git a/src/main/java/TP2/Main.java b/src/main/java/TP2/Main.java index ca8eee9..79b496b 100644 --- a/src/main/java/TP2/Main.java +++ b/src/main/java/TP2/Main.java @@ -8,7 +8,7 @@ import org.antlr.runtime.CharStream; import org.antlr.runtime.CommonTokenStream; import org.antlr.runtime.RecognitionException; -import TP2.asd.*; +import TP2.asd.Program.*; import java.util.*; public class Main { @@ -32,7 +32,7 @@ public class Main { VSLParser parser = new VSLParser(tokens); // Parse - ProgramImpl ast = parser.program(); + ProgramImp ast = parser.program(); // Pretty-print the program (to debug parsing) System.err.println("todo " + ast); diff --git a/src/main/java/TP2/asd/Interface.java b/src/main/java/TP2/asd/Interface.java index 898e8d6..918665a 100644 --- a/src/main/java/TP2/asd/Interface.java +++ b/src/main/java/TP2/asd/Interface.java @@ -1,6 +1,7 @@ package TP2.asd; import java.util.Map; +import TP2.asd.Program.*; public interface Interface{ public interface Expression { @@ -12,17 +13,17 @@ public interface Interface{ } public interface ProgramVisitor { - public S visitProgram(Program p, H h); - public S visitFunction(Program.Function f, H h); + public S visitProgram(ProgramImp p, H h); + public S visitFunction(Function f, H h); } public interface InstrVisitor{ - public S visitReturn(Program.Return_instr e, H h); + public S visitReturn(Return_instr e, H h); } public interface ExprVisitor { - public S visitConst(Program.Const e,H h); - public S visitBinOp(Program.BinopExpression e, H h); + public S visitConst(Const e,H h); + public S visitBinOp(BinopExpression e, H h); } public interface Type{ diff --git a/src/main/java/TP2/asd/Program.java b/src/main/java/TP2/asd/Program.java index a70791b..46cd0fe 100644 --- a/src/main/java/TP2/asd/Program.java +++ b/src/main/java/TP2/asd/Program.java @@ -1,9 +1,17 @@ package TP2.asd; import java.util.ArrayList; +import java.util.List; + import TP2.asd.Interface.*; public class Program{ + public static record ProgramImp(ArrayList instructions){ + public S accept(ProgramVisitor v, H h) { + return v.visitProgram(this, h); + } + } + public static record Function(Type type, String nom, ArrayList instructions){ public Function(Type type, String name, Instruction instruction) { this(type, name, new ArrayList<>() {{ add(instruction); }});