improved oracle sql parser.

This commit is contained in:
wenshao
2017-05-11 16:54:38 +08:00
parent f16196b320
commit 13c7228baf
3 changed files with 66 additions and 20 deletions
@@ -361,8 +361,13 @@ public class OracleExprParser extends SQLExprParser {
accept(Token.RPAREN);
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Plus, sqlExpr);
break;
case IDENTIFIER: {
sqlExpr = expr();
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Plus, sqlExpr);
break;
}
default:
throw new ParserException("TODO");
throw new ParserException("TODO " + lexer.info());
}
return primaryRest(sqlExpr);
case SUB:
@@ -403,6 +408,7 @@ public class OracleExprParser extends SQLExprParser {
lexer.nextToken();
break;
case VARIANT:
case QUES:
case IDENTIFIER:
sqlExpr = expr();
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Negative, sqlExpr);
@@ -985,6 +991,14 @@ public class OracleExprParser extends SQLExprParser {
rightExp = equalityRest(rightExp);
expr = new SQLBinaryOpExpr(expr, SQLBinaryOperator.NotEqual, rightExp, getDbType());
} else if (lexer.token() == Token.BANG) {
lexer.nextToken();
accept(Token.EQ);
rightExp = shift();
rightExp = equalityRest(rightExp);
expr = new SQLBinaryOpExpr(expr, SQLBinaryOperator.NotEqual, rightExp, getDbType());
}