diff --git a/src/main/java/de/neemann/digital/analyse/parser/Parser.java b/src/main/java/de/neemann/digital/analyse/parser/Parser.java index b2c225f4e..60ac4f686 100644 --- a/src/main/java/de/neemann/digital/analyse/parser/Parser.java +++ b/src/main/java/de/neemann/digital/analyse/parser/Parser.java @@ -53,7 +53,7 @@ public class Parser { private Expression parseOr() throws IOException, ParseException { Expression ex = parseAnd(); while (tokenizer.peek() == OR) { - tokenizer.next(); + tokenizer.consume(); ex = Operation.or(ex, parseAnd()); } return ex; @@ -62,7 +62,7 @@ public class Parser { private Expression parseAnd() throws IOException, ParseException { Expression ex = parseSimpleExp(); while (tokenizer.peek() == AND) { - tokenizer.next(); + tokenizer.consume(); ex = Operation.and(ex, parseSimpleExp()); } return ex; diff --git a/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java b/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java index 3e79c41fe..33f883869 100644 --- a/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java +++ b/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java @@ -39,14 +39,21 @@ public class Tokenizer { * @throws IOException IOException */ public Token next() throws IOException { - peek(); - isToken = false; + Token token = peek(); + consume(); return token; } /** - * peeks the next token. - * The token is kept in the stream, so next will return this token again! + * Consumes the token after a peek call + */ + public void consume() { + isToken = false; + } + + /** + * Peeks the next token. + * The token is kept in the stream, so next() or peek() will return this token again! * * @return the token * @throws IOException IOException diff --git a/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java b/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java index 6d68acd3c..c0918e02b 100644 --- a/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java +++ b/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java @@ -65,7 +65,7 @@ public class ParserTest extends TestCase { } public void testParseRegression2() throws Exception { - Parser p = new Parser("(C ∨ B) ∧ (A ∨ C) ∧ (B ∨ !C) ∧ (C ∨ !A)"); + Parser p = new Parser("(C ∨ B) ∧ (A ∨ C) ∧ (B ∨ ¬C) ∧ (C ∨ ¬A)"); Expression e = p.parse(); Expression simplified = QuineMcCluskey.simplify(e); assertTrue(simplified instanceof Operation.And);