From 52f562b570d9547da77f34949eac8d831f8ac51e Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Thu, 17 Aug 2017 15:58:56 +0200 Subject: [PATCH] =?UTF-8?q?DoStmt=20zu=20ASTPrinter=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dhbwstuttgart/syntaxtree/StatementVisitor.java | 2 ++ .../dhbwstuttgart/syntaxtree/statement/DoStmt.java | 10 ++++++---- .../syntaxtree/statement/WhileStmt.java | 9 --------- .../syntaxtree/visual/OutputGenerator.java | 13 +++++++++++++ .../dhbwstuttgart/typeinference/typeAlgo/TYPE.java | 5 +++++ test/parser/RunParserTest.java | 5 ++++- 6 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java b/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java index 39db3ef0..cb4a5c7b 100644 --- a/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java +++ b/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java @@ -53,6 +53,8 @@ public interface StatementVisitor { void visit(WhileStmt whileStmt); + void visit(DoStmt whileStmt); + void visit(Null aNull); void visit(Literal literal); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/DoStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/DoStmt.java index caab0b58..b24396bb 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/DoStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/DoStmt.java @@ -1,16 +1,18 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import org.antlr.v4.runtime.Token; -/** - * Created by Felix_K on 17.08.2017. - */ public class DoStmt extends WhileStmt { - public DoStmt(Expression expr, Statement loopBlock, Token offset) { super(expr, loopBlock, offset); } + + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java index 3422ab14..0127a505 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java @@ -21,15 +21,6 @@ public class WhileStmt extends Statement this.loopBlock = loopBlock; } - /** - *
Author: Martin Pl�micke - * @return - */ - public String toString() - { - return "WHILE " + loopBlock.toString(); - } - @Override public void accept(StatementVisitor visitor) { visitor.visit(this); diff --git a/src/de/dhbwstuttgart/syntaxtree/visual/OutputGenerator.java b/src/de/dhbwstuttgart/syntaxtree/visual/OutputGenerator.java index 637a5ef5..7e58fd3f 100644 --- a/src/de/dhbwstuttgart/syntaxtree/visual/OutputGenerator.java +++ b/src/de/dhbwstuttgart/syntaxtree/visual/OutputGenerator.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.visual; +import de.dhbwstuttgart.exceptions.NotImplementedException; import de.dhbwstuttgart.syntaxtree.*; import de.dhbwstuttgart.syntaxtree.statement.*; import de.dhbwstuttgart.syntaxtree.statement.literal.Literal; @@ -292,7 +293,19 @@ public class OutputGenerator implements ASTVisitor { @Override public void visit(WhileStmt whileStmt) { + out.append("while("); + whileStmt.expr.accept(this); + out.append(")"); + whileStmt.loopBlock.accept(this); + } + @Override + public void visit(DoStmt whileStmt) { + out.append("do "); + whileStmt.loopBlock.accept(this); + out.append("while("); + whileStmt.expr.accept(this); + out.append(");"); } @Override diff --git a/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java index ccb70002..646222eb 100644 --- a/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java +++ b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java @@ -204,6 +204,11 @@ public class TYPE implements StatementVisitor{ throw new NotImplementedException(); } + @Override + public void visit(DoStmt whileStmt) { + throw new NotImplementedException(); + } + @Override public void visit(Null aNull) { throw new NotImplementedException(); diff --git a/test/parser/RunParserTest.java b/test/parser/RunParserTest.java index 222a55b8..f1c63434 100644 --- a/test/parser/RunParserTest.java +++ b/test/parser/RunParserTest.java @@ -1,6 +1,8 @@ package parser; import de.dhbwstuttgart.parser.JavaTXParser; +import de.dhbwstuttgart.syntaxtree.SourceFile; +import de.dhbwstuttgart.syntaxtree.visual.ASTPrinter; import org.junit.Test; import java.io.File; @@ -15,6 +17,7 @@ public class RunParserTest { public void testMain() throws Exception { String[] args = new String[1]; args[0] = rootDirectory+"WhileTest.jav"; - new JavaTXParser().parse(new File(args[0])); + SourceFile sf = new JavaTXParser().parse(new File(args[0])); + System.out.println(ASTPrinter.print(sf)); } } \ No newline at end of file