bug fixed for oracle sql parser

This commit is contained in:
温少
2012-03-02 12:30:44 +08:00
parent 9d9ceb37a3
commit a67026f478
12 changed files with 207 additions and 19 deletions
@@ -270,8 +270,12 @@ public class Lexer {
unscan();
scanNumber();
return;
} else if (ch == '.') {
scanChar();
token = Token.DOTDOT;
} else {
token = Token.DOT;
}
token = Token.DOT;
return;
case '\'':
scanString();
@@ -689,6 +693,10 @@ public class Lexer {
boolean isDouble = false;
if (ch == '.') {
if (buf[bp + 1] == '.') {
token = Token.LITERAL_INT;
return;
}
sp++;
ch = buf[++bp];
isDouble = true;
@@ -869,15 +877,15 @@ public class Lexer {
return result;
}
}
public int bp() {
return this.bp;
}
public char current() {
return this.ch;
}
public void reset(int mark, char mark_ch, Token token) {
this.bp = mark;
this.ch = mark_ch;
@@ -170,6 +170,7 @@ public enum Token {
EXCEPTION("EXCEPTION"),
GRANT("GRANT"),
LOOP("LOOP"),
GOTO("GOTO"),
// transact-sql
TOP("TOP"),
@@ -207,6 +208,7 @@ public enum Token {
SEMI(";"),
COMMA(","),
DOT("."),
DOTDOT(".."),
EQ("="),
GT(">"),
LT("<"),