diff --git a/Aufgabe4Maven/pom.xml b/Aufgabe4Maven/pom.xml index ad360818e134385bc6054a48ca49d62e588b00a5..145674626b6e3a2ecd6a072022112ddc49ce1d4b 100644 --- a/Aufgabe4Maven/pom.xml +++ b/Aufgabe4Maven/pom.xml @@ -27,13 +27,16 @@ <version>5.9.0</version> <scope>test</scope> </dependency> + <dependency> - <groupId>com.google.java.contract</groupId> - <artifactId>cofoja</artifactId> - <version>1.1-r150</version> + <groupId>org.valid4j</groupId> + <artifactId>valid4j</artifactId> + <version>0.5.0</version> </dependency> </dependencies> -</project> \ No newline at end of file + +</project> + diff --git a/Aufgabe4Maven/src/Evaluator.java b/Aufgabe4Maven/src/Evaluator.java index 8dfd35b6a580810f9460cee0259d3557c9ec546e..520436931d8938f8ff207f124df2870eabeb9758 100644 --- a/Aufgabe4Maven/src/Evaluator.java +++ b/Aufgabe4Maven/src/Evaluator.java @@ -1,3 +1,4 @@ +import static org.valid4j.Assertive.*; public class Evaluator { @@ -29,7 +30,8 @@ public class Evaluator { public float visit(AstBinaryOp node) { - visit(node.astExpression1); + + //visit(node.astExpression1); switch(node.astOperator.astOperatorContent) { @@ -45,6 +47,7 @@ public class Evaluator { return (float) Math.pow(visit(node.astExpression1), visit(node.astExpression2)); } + neverGetHere(); return -111; } diff --git a/Aufgabe4Maven/src/Lexer.java b/Aufgabe4Maven/src/Lexer.java index 73240a07e7145bbbc20507a011af7219a42eeb00..873e2082eb1f0ade2ffd1262b0e2d950665e0a02 100644 --- a/Aufgabe4Maven/src/Lexer.java +++ b/Aufgabe4Maven/src/Lexer.java @@ -1,21 +1,25 @@ import java.util.ArrayList; import java.util.Objects; -import com.google.java.contract.*; + + public class Lexer { - @Requires({"s != null"}) + + public ArrayList<Token> lex(String s) { + require(s != null); + require(s.length() > 0); ArrayList<String> separatedChars = separateChars(s); ArrayList<String> tokensAsStrings = buildSubstringsFromSeparatedChars(separatedChars); - return constructTokenList(tokensAsStrings); - - + ArrayList<Token> tokenList = constructTokenList(tokensAsStrings); + ensure(tokenList.size() > 0); + return tokenList; } private ArrayList<String> separateChars(String stringToTokenize) { diff --git a/Aufgabe4Maven/src/Parser.java b/Aufgabe4Maven/src/Parser.java index 1bfbca27c64abe396f8025815e407d258b779607..0287bed7ac45ed9381657d878b931748dfd16b2c 100644 --- a/Aufgabe4Maven/src/Parser.java +++ b/Aufgabe4Maven/src/Parser.java @@ -1,16 +1,20 @@ import java.text.ParseException; import java.util.ArrayList; +import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.IntStream; +import static org.valid4j.Assertive.*; public class Parser { - public AstExpression parse (ArrayList<Token> tokenList) throws Exception { + public AstExpression parse(ArrayList<Token> tokenList) throws Exception { + require(tokenList.size() > 0); AstExpression root; root = parseAstExpression(tokenList); + ensure(root.astBinaryOp != null || root.astExpression != null || root.astValue != null); return root; } @@ -25,6 +29,7 @@ public class Parser { if(tokenList.size() == 1 ) { toReturn.astValue = parseValue(tokenList); + return toReturn; } @@ -283,6 +288,7 @@ public class Parser { } private AstDigitWoZ parseDigitWoZ (Token digitWoZ) { + require(!Objects.equals(digitWoZ.tokenString, "0")); AstDigitWoZ toReturn = new AstDigitWoZ(); diff --git a/Aufgabe4Maven/src/Plotter.java b/Aufgabe4Maven/src/Plotter.java index 9737b0d6c421c358ca31e8418ed10eb056916e98..5036fd7dba5b7adef0ded7b9c7a0243f23d2b6e7 100644 --- a/Aufgabe4Maven/src/Plotter.java +++ b/Aufgabe4Maven/src/Plotter.java @@ -68,24 +68,20 @@ class PlotterPanel extends JPanel { int[] xCords = valuesToDraw.getXCords(); for(int cord : xCords) { - yCordsWithOffset[i] = (ZERO_POINT_Y + (cord * -1 * 10)); i++; } - System.out.println(Arrays.toString(yCordsWithOffset)); int j = 0; int[] yCords = valuesToDraw.getYCords(); for(int cord : yCords) { - System.out.print("cords=" + cord); xCordsWithOffset[j] = ZERO_POINT_X + (cord * 10); j++; } - System.out.println(Arrays.toString(xCordsWithOffset)); PlotterPanel.this.yCords = yCordsWithOffset; diff --git a/Aufgabe4Maven/src/dbcTest.java b/Aufgabe4Maven/src/dbcTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f1b58998b0cd76513406a2932a5e28cdcf1c7f3f --- /dev/null +++ b/Aufgabe4Maven/src/dbcTest.java @@ -0,0 +1,24 @@ +import com.google.java.contract.Invariant; + +import static org.valid4j.Assertive.*; + +public class dbcTest { + + public static void main(String[] args) { + + print(null); + + } + + public static void print(String s) { + + System.out.println(s); + + int i = 5; + + ensure(i > 6); + + + } + +} diff --git a/Aufgabe4Maven/src/expressions.txt b/Aufgabe4Maven/src/expressions.txt index 5c449bfc2f753afeab88e0536675f52339348df9..593ba55a0faf1f5e2c91cdc3311554ef1f09b3c5 100644 --- a/Aufgabe4Maven/src/expressions.txt +++ b/Aufgabe4Maven/src/expressions.txt @@ -1,3 +1,4 @@ +11111111111111111111111111111111111 x x^2 4+3+x diff --git a/Aufgabe4Maven/src/main.java b/Aufgabe4Maven/src/main.java index 444278943dff75930d358a653b3f2bfa0aae9b22..e720b34d4375657d8f047c976c3b427092d7850d 100644 --- a/Aufgabe4Maven/src/main.java +++ b/Aufgabe4Maven/src/main.java @@ -51,7 +51,13 @@ public class main { for(ArrayList<Token> tokenList : tokenListList) { - rootAstExpressions.add(p.parse(tokenList)); + + try { + rootAstExpressions.add(p.parse(tokenList)); + } catch (Exception e) { + System.out.println("Invalid function received"); + } + }