📄 sastokenmaker.flex
字号:
<YYINITIAL> "goto" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "grid" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "group" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "groupby" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "groupformat" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "having" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "haxis" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "hbar" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "heading" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "high" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "html" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "id" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "if" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "infile" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "informat" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "inner" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "input" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "insert" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "intersect" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "keep" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "keylabel" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "label" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "lable" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "legend" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "length" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "libname" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "lineqs" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "link" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "list" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "listing" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "log" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "lostcard" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "low" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "mark" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "matings" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "mean" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "merge" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "missing" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "missover" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "mod" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "model" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "modify" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "n" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nocell" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nocharacters" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nodupkey" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "noexpandtabs" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "noframe" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "noheading" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "noinput" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nolegend" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nopad" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "noprint" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "nosharebuffers" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "not" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "note" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "notitle" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "notitles" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "notsorted" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ods" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "old" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "option" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "or" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "order" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "orderby" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "other" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "otherwise" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "outer" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "output" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "over" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "overlay" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "overprint" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pad" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pageby" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pagesize" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "parmcards" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "parmcards4" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "parms" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pattern" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pct" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pctn" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pctsum" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "picture" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pie" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "pie3d" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "plotter" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "predict" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "prefix" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "printer" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "proc" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "ps" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "put" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "quit" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "random" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "range" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "remove" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "rename" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "response" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "replace" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "reset" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "retain" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "return" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "rsubmit" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "run" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "s2" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "select" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "set" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "sharebuffers" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "signoff" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "signon" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "sim" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "skip" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "source2" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "startsas" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "std" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "stop" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "stopover" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "strata" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "sum" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "sumby" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "supvar" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "symbol" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "table" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "tables" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "tape" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "terminal" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "test" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "then" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "time" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "title" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "to" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "transform" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "treatments" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "truncover" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "unbuf" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "unbuffered" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "union" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "until" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "update" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "validate" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "value" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "var" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "variables" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "vaxis" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "vbar" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "weight" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "when" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "where" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "while" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "with" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "window" { addToken(Token.RESERVED_WORD); }
<YYINITIAL> "x" { addToken(Token.RESERVED_WORD); }
/* Base SAS procs. */
<YYINITIAL> "append" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "calendar" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "catalog" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "chart" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "cimport" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "compare" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "contents" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "copy" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "cpm" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "cport" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "datasets" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "display" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "explode" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "export" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "fontreg" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "format" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "forms" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "fslist" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "import" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "means" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "migrate" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "options" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "optload" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "optsave" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "plot" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "pmenu" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "print" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "printto" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "proto" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "prtdef" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "prtexp" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "pwencode" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "rank" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "registry" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "report" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "sort" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "sql" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "standard" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "summary" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "tabulate" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "template" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "timeplot" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "transpose" { addToken(Token.DATA_TYPE); }
/* SAS/STAT procs. */
<YYINITIAL> "corr" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "freq" { addToken(Token.DATA_TYPE); }
<YYINITIAL> "univariate" { addToken(Token.DATA_TYPE); }
/* Macros. */
<YYINITIAL> "%abort" { addToken(Token.FUNCTION); }
<YYINITIAL> "%bquote" { addToken(Token.FUNCTION); }
<YYINITIAL> "%by" { addToken(Token.FUNCTION); }
<YYINITIAL> "%cms" { addToken(Token.FUNCTION); }
<YYINITIAL> "%copy" { addToken(Token.FUNCTION); }
<YYINITIAL> "%display" { addToken(Token.FUNCTION); }
<YYINITIAL> "%do" { addToken(Token.FUNCTION); }
<YYINITIAL> "%else" { addToken(Token.FUNCTION); }
<YYINITIAL> "%end" { addToken(Token.FUNCTION); }
<YYINITIAL> "%eval" { addToken(Token.FUNCTION); }
<YYINITIAL> "%global" { addToken(Token.FUNCTION); }
<YYINITIAL> "%go" { addToken(Token.FUNCTION); }
<YYINITIAL> "%goto" { addToken(Token.FUNCTION); }
<YYINITIAL> "%if" { addToken(Token.FUNCTION); }
<YYINITIAL> "%inc" { addToken(Token.FUNCTION); }
<YYINITIAL> "%include" { addToken(Token.FUNCTION); }
<YYINITIAL> "%index" { addToken(Token.FUNCTION); }
<YYINITIAL> "%input" { addToken(Token.FUNCTION); }
<YYINITIAL> "%keydef" { addToken(Token.FUNCTION); }
<YYINITIAL> "%length" { addToken(Token.FUNCTION); }
<YYINITIAL> "%let" { addToken(Token.FUNCTION); }
<YYINITIAL> "%local" { addToken(Token.FUNCTION); }
<YYINITIAL> "%macro" { addToken(Token.FUNCTION); }
<YYINITIAL> "%mend" { addToken(Token.FUNCTION); }
<YYINITIAL> "%nrbquote" { addToken(Token.FUNCTION); }
<YYINITIAL> "%nrquote" { addToken(Token.FUNCTION); }
<YYINITIAL> "%nrstr" { addToken(Token.FUNCTION); }
<YYINITIAL> "%put" { addToken(Token.FUNCTION); }
<YYINITIAL> "%qscan" { addToken(Token.FUNCTION); }
<YYINITIAL> "%qsubstr" { addToken(Token.FUNCTION); }
<YYINITIAL> "%qsysfunc" { addToken(Token.FUNCTION); }
<YYINITIAL> "%quote" { addToken(Token.FUNCTION); }
<YYINITIAL> "%qupcase" { addToken(Token.FUNCTION); }
<YYINITIAL> "%scan" { addToken(Token.FUNCTION); }
<YYINITIAL> "%str" { addToken(Token.FUNCTION); }
<YYINITIAL> "%substr" { addToken(Token.FUNCTION); }
<YYINITIAL> "%superq" { addToken(Token.FUNCTION); }
<YYINITIAL> "%syscall" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysevalf" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysexec" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysfunc" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysget" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysprod" { addToken(Token.FUNCTION); }
<YYINITIAL> "%sysrput" { addToken(Token.FUNCTION); }
<YYINITIAL> "%then" { addToken(Token.FUNCTION); }
<YYINITIAL> "%to" { addToken(Token.FUNCTION); }
<YYINITIAL> "%tso" { addToken(Token.FUNCTION); }
<YYINITIAL> "%unquote" { addToken(Token.FUNCTION); }
<YYINITIAL> "%until" { addToken(Token.FUNCTION); }
<YYINITIAL> "%upcase" { addToken(Token.FUNCTION); }
<YYINITIAL> "%while" { addToken(Token.FUNCTION); }
<YYINITIAL> "%window" { addToken(Token.FUNCTION); }
<YYINITIAL> {
{LineTerminator} { addNullToken(); return firstToken; }
/* Comments. */
/* Do comments before operators as "*" can signify a line comment as */
/* well as an operator. */
^[ \t]*{LineCommentBegin} {
// We must do this because of how we
// abuse JFlex; since we return an entire
// list of tokens at once instead of a
// single token at a time, the "^" regex
// character doesn't really work, so we must
// check that we're at the beginning of a
// line ourselves.
start = zzStartRead;
// Might not be any whitespace.
if (yylength()>1) {
addToken(zzStartRead,zzMarkedPos-2, Token.WHITESPACE);
zzStartRead = zzMarkedPos-1;
}
// Remember: zzStartRead may now be updated,
// so we must check against 'start'.
if (start==s.offset) {
addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL);
addNullToken();
return firstToken;
}
else {
addToken(zzStartRead,zzStartRead, Token.OPERATOR);
}
}
{MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); }
/* Do operators before identifiers since some of them are words. */
{Operator} { addToken(Token.OPERATOR); }
{Separator} { addToken(Token.SEPARATOR); }
{Identifier} { addToken(Token.IDENTIFIER); }
{MacroVariable} { addToken(Token.VARIABLE); }
{Semicolon} { addToken(Token.IDENTIFIER); }
{Whitespace} { addToken(Token.WHITESPACE); }
{StringBoundary} { start = zzMarkedPos-1; yybegin(STRING); }
{CharBoundary} { start = zzMarkedPos-1; yybegin(CHAR); }
<<EOF>> { addNullToken(); return firstToken; }
/* Catch any other (unhandled) characters and flag them as OK; */
/* This will include "." from statements like "from lib.dataset". */
. { addToken(Token.IDENTIFIER); }
}
<STRING> {
[^\n\"]+ {}
{LineTerminator} { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; }
/* {StringBoundary}{StringBoundary} {} */
{StringBoundary} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); }
<<EOF>> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; }
}
<CHAR> {
[^\n\']+ {}
{LineTerminator} { yybegin(YYINITIAL); addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; }
/* {CharBoundary}{CharBoundary} {} */
{CharBoundary} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); }
<<EOF>> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; }
}
<MLC> {
[^\n\*]+ {}
{LineTerminator} { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }
{MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); }
\* {}
<<EOF>> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -