Advertisement
YahiaOsama

Untitled

Apr 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. ARRAY_DECLARE : OPEN_BRACK (STR_LIT (COMMA STR_LIT)*)* CLOSE_BRACK;
  2.  
  3. varStmt : VARIABLE (colonOrAssignment | (NEWLINE INDENT varBlock DEDENT));
  4.  
  5. varBlock : (varColonStmt NEWLINE)+;
  6.  
  7. varColonStmt : IDENTIFIER (COMMA IDENTIFIER)* COLON dataType;
  8.  
  9. colonOrAssignment : ((identifierAssignment|varColonStmt));
  10.  
  11. constStmt : CONST (identifierAssignment | (NEWLINE INDENT constBlock DEDENT) );
  12.  
  13. constBlock : identifierAssignment (NEWLINE identifierAssignment)* NEWLINE?;
  14.  
  15. echoStmt :
  16. ECHO OPEN_PAREN (echoDataType) (COMMA (echoDataType) )* CLOSE_PAREN
  17. | ECHO (echoDataType) (COMMA (echoDataType))*;
  18.  
  19. echoDataType: STR_LIT | IDENTIFIER | ARRAY_INDEX | functionCall | UNARY_IDENTIFIER ;
  20.  
  21. assertStmt : ASSERT NUMBER_LIT EQUALS_OPERATOR NUMBER_LIT ;
  22.  
  23. ARRAY_INDEX : IDENTIFIER OPEN_BRACK (IDENTIFIER|NUMBER_LIT) CLOSE_BRACK;
  24.  
  25. functionParameter : (IDENTIFIER | NUMBER_LIT | STR_LIT | equationStmt | identifierAssignment);
  26.  
  27. functionCall : IDENTIFIER OPEN_PAREN functionParameter (COMMA functionParameter)* CLOSE_PAREN;
  28.  
  29. UNARY_IDENTIFIER: '$' IDENTIFIER;
  30.  
  31. SKIP_ : WS -> skip;
  32.  
  33. dataType : STRING | INT ;
  34.  
  35.  
  36. STRING : 'string';
  37. INT : 'int';
  38. TRUE : 'true';
  39. FALSE : 'false';
  40.  
  41. COMMENT : '#'(MULTI_LINE_COMMENT|.)*? NEWLINE->skip;
  42. MULTI_LINE_COMMENT : '#['(MULTI_LINE_COMMENT|.)*?']#' -> skip;
  43. DOCUMENTATION_COMMENTS : '##'.*? -> skip;
  44. NEWLINE : '\r'? '\n' WS?;
  45. fragment WS : ' '+;
  46.  
  47. ARRAY :'array';
  48. INCLUDE : 'include';
  49. INTERFACE : 'interface';
  50. IS : 'is';
  51. ISNOT : 'isnot';
  52. ITERATOR : 'iterator';
  53. LET : 'let';
  54. MACRO : 'macro';
  55. METHOD : 'method';
  56. MIXIN : 'mixin';
  57. MOD : 'mod';
  58. NIL : 'nil';
  59. NOT : 'not';
  60. NOTIN : 'notin';
  61. OBJECT : 'object';
  62. OF : 'of';
  63. OR : 'or';
  64. OUT : 'out';
  65. PROC : 'proc';
  66. PTR : 'ptr';
  67. RAISE : 'raise';
  68. REF : 'ref';
  69. RETURN : 'return';
  70. SHL : 'shl';
  71. SHR : 'shr';
  72. STATIC : 'static';
  73. TEMPLATE : 'template';
  74. TRY : 'try';
  75. TUPLE : 'tuple';
  76. TYPE : 'type';
  77. USING : 'using';
  78. WHEN : 'when';
  79. WHILE : 'while';
  80. XOR : 'xor';
  81. AND : 'and';
  82. VARIABLE : 'var';
  83. ADDR : 'addr';
  84. AS : 'as';
  85. ASM : 'asm';
  86. BIND : 'bind';
  87. BLOCK : 'block';
  88. BREAK : 'break';
  89. CASE : 'case';
  90. CONCEPT : 'concept';
  91. CONST : 'const';
  92. CONTINUE : 'continue';
  93. CONVERTER : 'converter';
  94. DEFER : 'defer';
  95. DISCARD : 'discard';
  96. DISTINCT : 'distinct';
  97. DIV : 'div';
  98. DO : 'do';
  99. ELIF : 'elif';
  100. ELSE : 'else';
  101. END : 'end';
  102. ENUM : 'enum';
  103. EXCEPT : 'except';
  104. EXPORT : 'export';
  105. FINALLY : 'finally';
  106. FOR : 'for';
  107. FROM : 'from';
  108. FUNC : 'func';
  109. IF : 'if';
  110. IMPORT : 'import';
  111. IN : 'in';
  112. YIELD : 'yield';
  113. ASSERT : 'assert';
  114. ECHO : 'echo';
  115. IDENTIFIER : [a-zA-Z]+ [0-9]* ( ['_'] ([a-zA-Z] | [0-9]) )*;
  116. NUMBER_LIT : INT_LIT | INT8_LIT | INT16_LIT | INT32_LIT | INT64_LIT | UINT_LIT | UINT8_LIT | UINT16_LIT | UINT32_LIT | UINT64_LIT | FLOAT_LIT | FLOAT32_LIT | FLOAT64_LIT;
  117. INT_LIT : HEX_LIT | DEC_LIT | OCT_LIT | BIN_LIT;
  118. DEC_LIT : DIGIT+ ( ['_'] DIGIT+ )*;
  119. BIN_LIT : '0' ('b' | 'B' ) BINDIGIT+ ( ['_'] BINDIGIT+ )*;
  120. HEX_LIT : '0' ('x' | 'X' ) HEXDIGIT+ ( ['_'] HEXDIGIT+ )*;
  121. OCT_LIT : '0o' OCTDIGIT+ ( ['_'] OCTDIGIT )*;
  122. INT8_LIT : INT_LIT ('\'') ('i' | 'I') '8';
  123. INT16_LIT : INT_LIT ('\'') ('i' | 'I') '16';
  124. INT32_LIT : INT_LIT ('\'') ('i' | 'I') '32';
  125. INT64_LIT : INT_LIT ('\'') ('i' | 'I') '64';
  126. UINT_LIT : INT_LIT ('\'') ('u' | 'U');
  127. UINT8_LIT : INT_LIT ('\'') ('u' | 'U') '8';
  128. UINT16_LIT : INT_LIT ('\'') ('u' | 'U') '16';
  129. UINT32_LIT : INT_LIT ('\'') ('u' | 'U') '32';
  130. UINT64_LIT : INT_LIT ('\'') ('u' | 'U') '64';
  131. EXPONENT : ('e' | 'E' ) ('+' | '-') DIGIT+ ( ['_'] DIGIT+ )*;
  132. FLOAT_LIT : DIGIT (['_'] DIGIT+)* (('.' DIGIT+ (['_'] DIGIT+)* (EXPONENT)*) |EXPONENT);
  133. FLOAT32_SUFFIX : ('f' | 'F') '32';
  134. FLOAT32_LIT : HEX_LIT '\'' FLOAT32_SUFFIX | (FLOAT_LIT | DEC_LIT | OCT_LIT | BIN_LIT) ('\'') FLOAT32_SUFFIX;
  135. FLOAT64_SUFFIX : ( ('f' | 'F') '64' ) | 'd' | 'D';
  136. FLOAT64_LIT : HEX_LIT '\'' FLOAT64_SUFFIX | (FLOAT_LIT | DEC_LIT | OCT_LIT | BIN_LIT) ('\'') FLOAT64_SUFFIX;
  137. RANGE : '..';
  138. EQUALS_OPERATOR : '=''='?;
  139. ADD_OPERATOR : '+';
  140. MUL_OPERATOR : '*';
  141. DIGIT : [0-9];
  142. LETTER : [a-zA-Z];
  143. HEXDIGIT : DIGIT | [a-fA-F];
  144. OCTDIGIT : [0-7];
  145. BINDIGIT : [0-1];
  146.  
  147.  
  148. MINUS_OPERATOR : '-';
  149. DIV_OPERATOR : '/';
  150. BITWISE_NOT_OPERATOR : '~';
  151. AND_OPERATOR : '&';
  152. OR_OPERATOR : '|';
  153. LESS_THAN : '<';
  154. GREATER_THAN : '>';
  155. AT : '@';
  156. MODULUS : '%';
  157. NOT_OPERATOR : '!';
  158. XOR_OPERATOR : '^';
  159. DOT : '.';
  160. COLON : ':';
  161. OPEN_PAREN : '(';
  162. CLOSE_PAREN : ')';
  163. OPEN_BRACE : '{';
  164. CLOSE_BRACE : '}';
  165. OPEN_BRACK : '[';
  166. CLOSE_BRACK : ']';
  167. COMMA : ',';
  168. SEMI_COLON : ';';
  169. STR_LIT : '"'.*?'"';
  170. CHAR_LIT : '\''([a-zA-Z]
  171. |'\\'('r'
  172. |'c'
  173. |'n'
  174. |'l'
  175. |'f'
  176. |'t'
  177. |'v'
  178. |'\\'
  179. |'"'
  180. |'\''
  181. |DIGIT+
  182. |'a'
  183. |'b'
  184. |'e'
  185. |'x 'HEXDIGIT HEXDIGIT))'\'';
  186. TRIPLESTR_LIT : '"""'.*?'"""';
  187. RSTR_LIT : 'r''"'.*?'"';
  188. GENERALIZED_STR_LIT : [a-zA-Z]+ STR_LIT;
  189. GENERALIZED_TRIPLESTR_LIT : [a-zA-Z]+ TRIPLESTR_LIT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement