ReportLexer.g4 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. lexer grammar ReportLexer;
  2. Cell : LETTER DIGIT+ ;
  3. Operator : '+'
  4. | '-'
  5. | '*'
  6. | '/'
  7. | '%'
  8. ;
  9. OP : '>'
  10. | '<'
  11. | '=='
  12. | '!='
  13. | '>='
  14. | '<='
  15. | 'in'
  16. | 'not in'
  17. | 'not in'
  18. | 'like'
  19. ;
  20. ORDER : 'desc' | 'asc' ;
  21. BOOLEAN : 'true' | 'false' ;
  22. COLON : ':';
  23. COMMA : ',' ;
  24. NULL : 'null';
  25. LeftParen : '(' ;
  26. RightParen : ')' ;
  27. STRING : '"' STRING_CONTENT '"'
  28. | '\'' STRING_CONTENT '\''
  29. ;
  30. AND : 'and' | '&&' ;
  31. OR : 'or' | '||' ;
  32. INTEGER : ('-')? DIGIT+;
  33. NUMBER
  34. :
  35. '-'? DIGIT+ '.' DIGIT+ EXP? // ('-'? INT '.' INT EXP?)1.35, 1.35E-9, 0.3, -4.5
  36. | '-'? DIGIT+ EXP // 1e10 -3e4
  37. | '-'? DIGIT+ // -3, 45
  38. ;
  39. EXCLAMATION : '!';
  40. EXP
  41. :
  42. [Ee] [+\-]? DIGIT+
  43. ;
  44. Identifier : StartChar Char* ;
  45. LETTER : [A-Z]+ ;
  46. Char : StartChar
  47. | '-' | '_' | DIGIT
  48. | '\u00B7'
  49. | '\u0300'..'\u036F'
  50. | '\u203F'..'\u2040'
  51. ;
  52. DIGIT : [0-9];
  53. fragment
  54. STRING_CONTENT :
  55. ( EscapeSequence | ~('"'|'\''))*
  56. ;
  57. fragment
  58. EscapeSequence
  59. : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
  60. | UnicodeEscape
  61. | OctalEscape
  62. ;
  63. fragment
  64. OctalEscape
  65. : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
  66. | '\\' ('0'..'7') ('0'..'7')
  67. | '\\' ('0'..'7')
  68. ;
  69. fragment
  70. UnicodeEscape
  71. :
  72. '\\' 'u' HEX HEX HEX HEX
  73. ;
  74. fragment
  75. HEX
  76. :
  77. [0-9a-fA-F]
  78. ;
  79. fragment
  80. StartChar
  81. : [a-zA-Z]
  82. | '\u2070'..'\u218F'
  83. | '\u2C00'..'\u2FEF'
  84. | '\u3001'..'\uD7FF'
  85. | '\uF900'..'\uFDCF'
  86. | '\uFDF0'..'\uFFFD'
  87. ;
  88. WS
  89. :
  90. [ \t\r\n]+ -> channel(HIDDEN)
  91. ;
  92. NL
  93. :
  94. '\r'? '\n' ->channel(HIDDEN)
  95. ;