From dbce36980872cb449c98ec3f364bcd30cca0f7b0 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 20 Dec 2020 19:10:37 +0100 Subject: [PATCH] expression parser supports a backslash in a variables name; see #581 --- .../java/de/neemann/digital/analyse/parser/Tokenizer.java | 4 ++-- .../java/de/neemann/digital/analyse/parser/ParserTest.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) 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 4d5943a7e..8c0e056b9 100644 --- a/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java +++ b/src/main/java/de/neemann/digital/analyse/parser/Tokenizer.java @@ -17,9 +17,9 @@ public class Tokenizer { enum Token {UNKNOWN, IDENT, AND, OR, NOT, XOR, OPEN, CLOSE, ONE, ZERO, EOF, COMMA, EQUAL, NOTEQUAL, POSTNOT} private final Reader in; + private final StringBuilder builder; private Token token; private boolean isToken; - private StringBuilder builder; private boolean isUnreadChar = false; private int unreadChar; @@ -174,7 +174,7 @@ public class Tokenizer { private boolean isIdentChar(int c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') - || (c == '_'); + || (c == '_') || (c == '\\'); } private boolean isNumberChar(int c) { 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 0cbe7ae37..072b56de2 100644 --- a/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java +++ b/src/test/java/de/neemann/digital/analyse/parser/ParserTest.java @@ -27,6 +27,7 @@ public class ParserTest extends TestCase { public void testIdent() throws Exception { assertEquals(new Variable("C"), createSingle("C")); assertEquals(new Variable("A_1"), createSingle("A_1")); + assertEquals(new Variable("A\\_1"), createSingle("A\\_1")); } public void testConst() throws Exception {