📄 sqltokenmaker.flex
字号:
zzBuffer = s.array;
/*
* We replaced the line below with the two below it because zzRefill
* no longer "refills" the buffer (since the way we do it, it's always
* "full" the first time through, since it points to the segment's
* array). So, we assign zzEndRead here.
*/
//zzStartRead = zzEndRead = s.offset;
zzStartRead = s.offset;
zzEndRead = zzStartRead + s.count - 1;
zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset;
zzLexicalState = YYINITIAL;
zzReader = reader;
zzAtBOL = true;
zzAtEOF = false;
}
/*****************************************************************************/
%}
LineTerminator = ([\n])
Letter = ([A-Za-z])
Digit = ([0-9])
Whitespace = ([ \t]+)
IdentifierStart = ({Letter})
IdentifierPart = ({IdentifierStart}|{Digit})
Identifier = ({IdentifierStart}{IdentifierPart}*)
Operator = (">="|"<="|"<>"|">"|"<"|"="|"+"|"-"|"*"|"/")
Separator = ([\(\)])
Parameter = ([:]{Identifier})
Integer = ({Digit}+)
Float = (({Digit}+[.]{Digit}*)|([.]{Digit}*))
ApproxNum = (({Digit}+[eE][+-]?{Digit}+)|({Digit}+[.]{Digit}*[eE][+-]?[0-9]+)|([.][0-9]*[eE][+-]?[0-9]+))
CommentBegin = ("--")
Comment = ({CommentBegin}.*)
%state STRING
%state CHAR
%%
/* Keywords */
<YYINITIAL> "ADD" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ALL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ALTER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "AND" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ANY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "AS" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ASC" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "AUTOINCREMENT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "AVA" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BETWEEN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BINARY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BIT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BOOLEAN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BY CREATE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "BYTE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "CHAR" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "CHARACTER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "COLUMN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "CONSTRAINT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "COUNT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "COUNTER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "CURRENCY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DATABASE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DATE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DATETIME" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DELETE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DESC" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DISALLOW" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DISTINCT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DISTINCTROW" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DOUBLE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "DROP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "EXISTS" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "FLOAT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "FLOAT4" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "FLOAT8" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "FOREIGN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "FROM" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "GENERAL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "GROUP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "GUID" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "HAVING" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INNER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INSERT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "IGNORE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "IMP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "IN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INDEX" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INTEGER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INTEGER1" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INTEGER2" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INTEGER4" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "INTO" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "IS" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "JOIN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "KEY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LEFT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LEVEL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LIKE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LOGICAL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LONG" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LONGBINARY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "LONGTEXT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "MAX" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "MEMO" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "MIN" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "MOD" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "MONEY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "NOT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "NULL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "NUMBER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "NUMERIC" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "OLEOBJECT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ON PIVOT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "OPTION PRIMARY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ORDER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "OUTER" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "OWNERACCESS" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "PARAMETERS" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "PERCENT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "PRIMARY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "REAL" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "REFERENCES" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "RIGHT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SELECT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SET" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SHORT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SINGLE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SMALLINT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SOME" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "STDEV" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "STDEVP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "STRING" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "SUM" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TABLE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TABLEID" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TEXT" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TIME" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TIMESTAMP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TOP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "TRANSFORM" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "UNION" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "UNIQUE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "UPDATE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VALUE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VALUES" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VAR" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VARBINARY" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VARCHAR" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "VARP" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "WHERE" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "WITH" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "YESNO" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> {
{LineTerminator} { addNullToken(); return firstToken; }
{Identifier} { addToken(Token.IDENTIFIER); }
";" { addToken(Token.IDENTIFIER); }
{Parameter} { addToken(Token.IDENTIFIER); }
{Comment} { addToken(Token.COMMENT_EOL); }
{Whitespace} { addToken(Token.WHITESPACE); }
{Operator} { addToken(Token.OPERATOR); }
{Separator} { addToken(Token.SEPARATOR); }
{Integer} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); }
{Float} { addToken(Token.LITERAL_NUMBER_FLOAT); }
{ApproxNum} { addToken(Token.LITERAL_NUMBER_FLOAT); }
"\"" { start = zzMarkedPos-1; yybegin(STRING); }
"\'" { start = zzMarkedPos-1; yybegin(CHAR); }
"["[^\]]*"]" { addToken(Token.PREPROCESSOR); }
"["[^\]]* { addToken(Token.ERROR_IDENTIFIER); addNullToken(); return firstToken; }
<<EOF>> { addNullToken(); return firstToken; }
/* Catch any other (unhandled) characters and flag them as OK; */
/* I don't know enough about SQL to know what's really invalid. */
. { addToken(Token.IDENTIFIER); }
}
<STRING> {
[^\n\"]+ {}
\n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; }
"\"\"" {}
"\"" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); }
<<EOF>> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; }
}
<CHAR> {
[^\n\']+ {}
\n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; }
"\'\'" {}
"\'" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); }
<<EOF>> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -