Added support for parentheses around expressions as per #72

This commit is contained in:
Gideon Le Grange 2020-01-03 08:46:09 +02:00
parent 95c0abfec4
commit 2fea5e3a6b
2 changed files with 16 additions and 2 deletions

View File

@ -79,7 +79,7 @@ class Parser {
}
private void expr() throws ParseException {
expect(Token.NOT, Token.TEXT);
expect(Token.NOT, Token.TEXT, Token.LEFT_BRACKET);
switch (token) {
case NOT:
notExpr();
@ -106,6 +106,13 @@ class Parser {
}
}
break;
case LEFT_BRACKET : {
next();
expr();
expect(Token.RIGHT_BRACKET);
next();
}
break;
}
// if you get here, you had a expression, see if you want more.
switch (token) {

View File

@ -28,6 +28,7 @@ class Scanner {
SLASH("/"), COMMA(","), EOL(), WS, TEXT,
LESS("<"), MORE(">"), EQUALS("="), NOT_EQUALS("!="), PIPE("!"),
LEFT_BRACKET("("), RIGHT_BRACKET(")"),
WHERE, NOT, AND, OR, RETURN;
@Override
@ -80,6 +81,12 @@ class Scanner {
case '=':
nextChar();
return EQUALS;
case '(' :
nextChar();
return LEFT_BRACKET;
case ')' :
nextChar();
return RIGHT_BRACKET;
case '!':
return pipe();
case '"':