<DEFAULT,IN_DBL_BRACE> TOKEN : {
<ASC: "asc">
| <AT: "at">
| <BY: "by">
| <DATASET: "dataset">
| <DECOR: "decor">
| <DESC: "desc">
| <DISTINCT: "distinct">
| <ELSE: "else">
| <EVERY: "every">
| <FOR: "for">
| <FROM: "from">
| <GROUP: "group">
| <IF: "if">
| <IN: "in">
| <LET: "let">
| <LIMIT: "limit">
| <OFFSET: "offset">
| <ORDER: "order">
| <RETURN: "return">
| <SATISFIES: "satisfies">
| <SELECT: "select">
| <SOME: "some">
| <THEN: "then">
| <UNION: "union">
| <WHERE: "where">
| <WITH: "with">
| <KEEPING: "keeping">
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<CARET: "^">
| <DIV: "/">
| <IDIV: "idiv">
| <MINUS: "-">
| <MOD: "%">
| <MUL: "*">
| <PLUS: "+">
| <LEFTPAREN: "(">
| <RIGHTPAREN: ")">
| <LEFTBRACKET: "[">
| <RIGHTBRACKET: "]">
| <COLON: ":">
| <COMMA: ",">
| <DOT: ".">
| <QUES: "?">
| <LT: "<">
| <GT: ">">
| <LE: "<=">
| <GE: ">=">
| <EQ: "=">
| <NE: "!=">
| <SIMILAR: "~=">
| <ASSIGN: ":=">
| <AND: "and">
| <OR: "or">
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<LEFTBRACE: "{"> : DEFAULT
}
|
<DEFAULT> TOKEN : {
<RIGHTBRACE: "}"> : {
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<LEFTDBLBRACE: "{{"> : IN_DBL_BRACE
}
|
<IN_DBL_BRACE> TOKEN : {
<RIGHTDBLBRACE: "}}"> : {
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<INTEGER_LITERAL: (<DIGIT>)+>
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<NULL: "null">
| <TRUE: "true">
| <FALSE: "false">
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<#DIGIT: ["0"-"9"]>
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<DOUBLE_LITERAL: <DIGITS> | <DIGITS> ("." <DIGITS>)? | "." <DIGITS>>
| <FLOAT_LITERAL: <DIGITS> ("f" | "F") | <DIGITS> ("." <DIGITS> ("f" | "F"))? | "." <DIGITS> ("f" | "F")>
| <DIGITS: (<DIGIT>)+>
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<#LETTER: ["A"-"Z","a"-"z"]>
| <SPECIALCHARS: ["$","_","-"]>
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<STRING_LITERAL: "\"" (<EscapeQuot> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\"","\\"])* "\"" | "\'" (<EscapeApos> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\'","\\"])* "\'">
| <#EscapeQuot: "\\\"">
| <#EscapeApos: "\\\'">
| <#EscapeBslash: "\\\\">
| <#EscapeSlash: "\\/">
| <#EscapeBspace: "\\b">
| <#EscapeFormf: "\\f">
| <#EscapeNl: "\\n">
| <#EscapeCr: "\\r">
| <#EscapeTab: "\\t">
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<IDENTIFIER: <LETTER> (<LETTER> | <DIGIT> | <SPECIALCHARS>)*>
}
|
<DEFAULT,IN_DBL_BRACE> TOKEN : {
<VARIABLE: "$" <LETTER> (<LETTER> | <DIGIT> | "_")*>
}
|
<DEFAULT,IN_DBL_BRACE> SKIP : {
" "
| "\t"
| "\r"
| "\n"
}
|
<DEFAULT,IN_DBL_BRACE> SKIP : {
<"//" (~["\n"])* "\n">
}
|
<DEFAULT,IN_DBL_BRACE> SKIP : {
<"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")?>
}
|
<DEFAULT,IN_DBL_BRACE> SKIP : {
"/*" : INSIDE_COMMENT
}
|
<INSIDE_COMMENT> SPECIAL : {
<"+" (" ")* (~["*"])*>
}
|
<INSIDE_COMMENT> SKIP : {
"/*" : {
}
|
<INSIDE_COMMENT> SKIP : {
"*/" : {
| <~[]>
}
|