RuleLexer.g4 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. lexer grammar RuleLexer;
  2. COUNT : 'count';
  3. AVG : 'avg';
  4. SUM : 'sum';
  5. MAX : 'max';
  6. MIN : 'min';
  7. AND : 'and'|'&&'|','|'\u5e76\u4e14'|'\u4e14';
  8. OR : 'or'|'||'|'\u6216\u8005'|'\u6216';
  9. Datatype : 'String'
  10. | 'int'
  11. | 'Integer'
  12. | 'double'
  13. | 'Double'
  14. | 'long'
  15. | 'Long'
  16. | 'float'
  17. | 'Float'
  18. | 'BigDecimal'
  19. | 'boolean'
  20. | 'Boolean'
  21. | 'Date'
  22. | 'List'
  23. | 'Set'
  24. | 'Map'
  25. | 'Enum'
  26. | 'Object'
  27. ;
  28. GreaterThen : '>'|'\u5927\u4e8e';
  29. GreaterThenOrEquals : '>='|'\u5927\u4e8e\u7b49\u4e8e';
  30. LessThen : '<'|'\u5c0f\u4e8e';
  31. LessThenOrEquals : '<='|'\u5c0f\u4e8e\u7b49\u4e8e';
  32. Equals : '=='|'\u7b49\u4e8e';
  33. NotEquals : '!='|'\u4e0d\u7b49\u4e8e';
  34. EndWith : 'EndWith'|'\u7ed3\u675f\u4e8e';
  35. NotEndWith : 'NotEndWith'|'\u4e0d\u7ed3\u675f\u4e8e' ;
  36. StartWith : 'StartWith'|'\u5f00\u59cb\u4e8e';
  37. NotStartWith : 'NotStartWith'|'\u4e0d\u5f00\u59cb\u4e8e';
  38. In : 'In'|'\u5728\u96c6\u5408\u4e2d';
  39. NotIn : 'NotIn'|'\u4e0d\u5728\u96c6\u5408\u4e2d';
  40. Match : 'Match'|'\u5339\u914d';
  41. NotMatch : 'NotMatch'|'\u4e0d\u5339\u914d';
  42. EqualsIgnoreCase : 'EqualsIgnoreCase'|'\u5ffd\u7565\u5927\u5c0f\u5199\u7b49\u4e8e';
  43. NotEqualsIgnoreCase : 'NotEqualsIgnoreCase'|'\u5ffd\u7565\u5927\u5c0f\u5199\u4e0d\u7b49\u4e8e';
  44. ARITH
  45. :
  46. '+'
  47. | '-'
  48. | '*'
  49. | '/'
  50. | '%'
  51. ;
  52. NUMBER
  53. :
  54. '-'? INT '.' INT EXP? // ('-'? INT '.' INT EXP?)1.35, 1.35E-9, 0.3, -4.5
  55. | '-'? INT EXP // 1e10 -3e4
  56. | '-'? INT // -3, 45
  57. ;
  58. Boolean : 'true'
  59. | 'false'
  60. ;
  61. Identifier
  62. :
  63. StartChar Char*
  64. ;
  65. STRING :
  66. '"' STRING_CONTENT '"'
  67. ;
  68. fragment
  69. STRING_CONTENT :
  70. ( EscapeSequence | ~('"'))*
  71. ;
  72. fragment
  73. INT
  74. :
  75. DIGIT+
  76. ;
  77. fragment
  78. EXP
  79. :
  80. [Ee] [+\-]? INT
  81. ; // \- since - means "range" inside [...]
  82. fragment
  83. EscapeSequence
  84. : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
  85. | UnicodeEscape
  86. | OctalEscape
  87. ;
  88. fragment
  89. OctalEscape
  90. : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
  91. | '\\' ('0'..'7') ('0'..'7')
  92. | '\\' ('0'..'7')
  93. ;
  94. fragment
  95. UnicodeEscape
  96. :
  97. '\\' 'u' HEX HEX HEX HEX
  98. ;
  99. fragment
  100. Char : StartChar
  101. | '-' | '_' | DIGIT
  102. | '\u00B7'
  103. | '\u0300'..'\u036F'
  104. | '\u203F'..'\u2040'
  105. ;
  106. fragment
  107. StartChar
  108. : [a-zA-Z]
  109. | '\u2070'..'\u218F'
  110. | '\u2C00'..'\u2FEF'
  111. | '\u3001'..'\uD7FF'
  112. | '\uF900'..'\uFDCF'
  113. | '\uFDF0'..'\uFFFD'
  114. ;
  115. fragment
  116. DIGIT
  117. :
  118. [0-9]
  119. ;
  120. fragment
  121. HEX
  122. :
  123. [0-9a-fA-F]
  124. ;
  125. WS
  126. :
  127. [ \t\r\n]+ -> channel(HIDDEN)
  128. ;
  129. NL
  130. :
  131. '\r'? '\n' ->channel(HIDDEN)
  132. ;
  133. COMMENT
  134. : '/*' .*? '*/' ->channel(HIDDEN);
  135. LINE_COMMENT
  136. : '//' ~[\r\n]* '\r'? '\n' ->channel(HIDDEN)
  137. ;