diff --git a/expressions.txt b/expressions.txt index 8ef200ff4ffbcf61172ce1ee8f1ba17c63a6da3f..e06786f8951366a167d5dbc357fae99c9036adca 100644 --- a/expressions.txt +++ b/expressions.txt @@ -1 +1,3 @@ -1 + xy^2 - (31 * x)y \ No newline at end of file +1 + xy^2 - (31 * x)y +1 + x^2 - (3 * x) +2x + 0,5x^2 - 1 \ No newline at end of file diff --git a/src/Application.java b/src/Application.java index f9d586f369030370a6e91f41e58450c8fb3f0081..dedb78af92d61ca2c689a4d199698c80185aaab5 100644 --- a/src/Application.java +++ b/src/Application.java @@ -1,8 +1,27 @@ +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; import java.util.Arrays; import java.util.List; public class Application { public static void main(String[] args) { + BufferedReader reader; + String datapath = "expressions.txt"; + try { + System.out.println("Reading the file:"); + reader = new BufferedReader(new FileReader(datapath)); + String line = reader.readLine(); + while(line != null) { + System.out.println(line); + line = reader.readLine(); + } + System.out.println(); + reader.close(); + } + catch (IOException e ) { + e.printStackTrace(); + } //List with a fitting String to be parsed into multiple tokens List<String> test = Arrays.asList("1 + xy^2 - (31 * x)y"); //Iterates through every String diff --git a/src/Parser.java b/src/Parser.java index 358b1879fbcad3a41fb10d98d012282b86728377..7e341d139f3c641d49ecf816ceb2290bca194520 100644 --- a/src/Parser.java +++ b/src/Parser.java @@ -84,7 +84,7 @@ public class Parser { //parses a list of tokens into a value private Optional<Expression> parseValue(List<Lexer.Token> ts) throws ParserException { if (ts.isEmpty()) { - throw new ParserException("SyntaxError: expected a number"); + throw new ParserException("RuntimeException: empty token list"); } if (ts.get(0).getType() != Lexer.TokenType.NUMBER) { return Optional.empty(); @@ -114,13 +114,13 @@ public class Parser { //parses a decimal of a list of tokens & a string private Expression parseDecimal(List<Lexer.Token> ts, String data) throws ParserException { if(ts.size()<1) { - throw new ParserException("SyntaxError: "); + throw new ParserException("RuntimeException: empty token list"); } if(ts.get(0).getType() != Lexer.TokenType.SPECIAL) { - throw new ParserException(""); + throw new ParserException("SyntaxException: expected a comma"); } if(ts.get(1).getType() != Lexer.TokenType.NUMBER) { - throw new ParserException(""); + throw new ParserException("SyntaxException: expected a number after a comma"); } Number beforeDot = (Number) parseNumber(data); ts.remove(0);