From 196131dac1ad4dbf7b1ffa50826bb7e3a1324096 Mon Sep 17 00:00:00 2001 From: Gideon le Grange Date: Tue, 7 Oct 2014 11:18:27 +0200 Subject: [PATCH] Added != support to scanner. #11 --- .../java/me/legrange/mikrotik/impl/Scanner.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/legrange/mikrotik/impl/Scanner.java b/src/main/java/me/legrange/mikrotik/impl/Scanner.java index 2be8476..6af8d66 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Scanner.java +++ b/src/main/java/me/legrange/mikrotik/impl/Scanner.java @@ -24,7 +24,7 @@ class Scanner { enum Token { SLASH("/"), COMMA(","), EOL(), WS, TEXT, - LESS("<"), MORE(">"), EQUALS("="), + LESS("<"), MORE(">"), EQUALS("="), NOT_EQUALS("!="), WHERE, NOT, AND, OR, RETURN; @Override @@ -73,6 +73,8 @@ class Scanner { case '=' : nextChar(); return Token.EQUALS; + case '!' : + return notEquals(); case '"' : return quotedText('"'); case '\'' : @@ -133,6 +135,15 @@ class Scanner { return Token.WS; } + /** process the not equals token */ + private Token notEquals() throws ScanException { + nextChar(); // eat the ! + if (c != '=') { + throw new ScanException(String.format("Expected = after !, found '%c'", c)); + } + return Token.NOT_EQUALS; + } + /** return the next character from the line of text */ private void nextChar() { if (pos < line.length()) {