Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 2.99 KB | None | 0 0
  1. lexer grammar  RubyLexer;
  2. /**
  3. TERMINALS
  4. */
  5. fragment ESCAPED_QUOTE : '\\"';
  6. fragment ESCAPED_SINGLEQUOTE : '\'';
  7. LITERAL : '"' ( ESCAPED_QUOTE | ~('\r') )*? '"'               // war ~('\n'|'\r')
  8.        | '\'' ( ESCAPED_SINGLEQUOTE | ~('\r') )*? '\''; // war ~('\n'|'\r')
  9.  
  10. COMMA : ',';
  11. DOT : '.';
  12. SEMICOLON : ';';
  13. DCOLON : '::';
  14. COLON : ':';
  15. CRLF : '\r'? '\n';
  16. QM : '?' -> skip;
  17.  
  18. CLASS: 'class';
  19. SELF: 'self';
  20. MODULE: 'module';
  21. //REQUIRE : 'require';
  22. END : 'end';
  23. DEF : 'def';
  24. RETURN : 'return';
  25. PIR : 'pir';
  26. INCLUDE : 'include';
  27. EXTEND : 'extend';
  28. PRIVATE : 'private';
  29. PROTECTED : 'protected';
  30. BEGIN : 'begin';
  31. RESCUE : 'rescue';
  32. RAISE : 'raise';
  33. ALIAS : 'alias';
  34.  
  35. //IF_EXCEPT : 'if Rails.env.development' -> skip;
  36.  
  37.  
  38. IF: 'if';
  39. ELSE : 'else';
  40. ELSIF : 'elsif';
  41. UNLESS : 'unless';
  42. WHILE : 'while';
  43. RETRY : 'retry';
  44. BREAK : 'break';
  45.  
  46. FOR : 'for';
  47. EACH : 'each';
  48. DO : 'do';
  49. IN : 'in';
  50. FORM_FOR: 'form_for';
  51.  
  52. TRUE : 'true';
  53. FALSE : 'false';
  54.  
  55. // TODO a lot of operators are still missing
  56.  
  57. PLUS : '+';
  58. MINUS : '-';
  59. MUL : '*';
  60. DIV : '/';
  61. MOD : '%';
  62. EXP : '**';
  63.  
  64.  
  65. EQUAL : '==';
  66. NOT_EQUAL : '!=';
  67. GREATER : '>';
  68. LESS : '<';
  69. SPACESHIP : '<=>';
  70. LESS_EQUAL : '<=';
  71. GREATER_EQUAL : '>=';
  72.  
  73.  
  74. ASSIGN : '=';
  75. PLUS_ASSIGN : '+=';
  76. MINUS_ASSIGN : '-=';
  77. MUL_ASSIGN : '*=';
  78. DIV_ASSIGN : '/=';
  79. MOD_ASSIGN : '%=';
  80. EXP_ASSIGN : '**=';
  81. OR_ASSIGN : '||=';
  82.  
  83. BIT_AND : '&';
  84. BIT_OR : '|';
  85. BIT_XOR : '^';
  86. BIT_NOT : '~';
  87. BIT_SHL : '<<';
  88. BIT_SHR : '>>';
  89. HASH : '=>';
  90. LAMBDA : '->';
  91. LAMBDA_WORD : 'lambda';
  92.  
  93. AND : 'and' | '&&';
  94. OR : 'or' | '||';
  95. NOT : 'not' | '!';
  96.  
  97. LEFT_RBRACKET : '(';
  98. RIGHT_RBRACKET : ')';
  99. LEFT_SBRACKET : '[';
  100. RIGHT_SBRACKET : ']';
  101.  
  102. LEFT_CBRACKET : '{';
  103. RIGHT_CBRACKET : '}';
  104.  
  105. NIL : 'nil' | 'NIL';
  106.  
  107. //SKIP Scenarios
  108. SL_COMMENT : ('#' ~('\r' | '\n')* '\r'? '\n') -> skip;
  109. ML_COMMENT : ('=begin' .*? '=end' '\r'? '\n') -> skip;
  110. //CALL_IF_ENV : IF 'Rails' DOT 'env' DOT 'development?' -> skip ;
  111. WS : (' '|'\t')+ -> skip;  // '\n' war nicht da
  112. SQL : 'SQL';
  113. STRING : 'STRING';
  114. EOS : 'EOS';
  115. WASNUN : 'WASNUN';
  116. SQL_INLINE : BIT_SHL MINUS SQL .*? SQL CRLF -> skip; // <<-SQL
  117. HTML_INLINE : BIT_SHL MINUS STRING .*? STRING -> skip;
  118. STRING_LITERAL : MOD ONE_CHAR LEFT_RBRACKET .*? RIGHT_RBRACKET -> skip;
  119. WASNUN_INLINE : BIT_SHL MINUS WASNUN .*? WASNUN -> skip;
  120.  
  121. DEBUG : 'debug';
  122. INT : [0-9]+;
  123. FLOAT : [0-9]*'.'[0-9]+;
  124. ID_CONSTANT : [A-Z_]+;
  125. ID_CLASS_VAR : '@@'ID ;
  126. ID_INSTANCE_VAR : '@'ID;
  127. ID_CLASS_CALL : [A-Z_][a-zA-Z0-9_]*;
  128. ID : [a-zA-Z_][a-zA-Z0-9_]*;
  129. ID_GLOBAL : '$'ID;
  130. //ID_FUNCTION_BOOL : ID QM;
  131. ID_FUNCTION : ID[?];
  132. MAIL_REGEX: '/\\A[\\w+\\-.]+@[a-z\\d\\-]+(\\.[a-z]+)*\\.[a-z]+\\z/i';
  133. //REGEX: ( DIV | ('i') | ('@') | ('[') | (']') | ('+') | ('.') | ('*') | ('-') | ('\\') | ('(') | (')') |('A') |('w') |('a') |('z') |('Z')
  134.      //|('w')|('a'));
  135. ONE_CHAR : [a-zA-Z];
  136. PERCENT_EXPR: MOD ONE_CHAR LEFT_RBRACKET ID RIGHT_RBRACKET;
  137. //ID_CLASS : ID;             VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
  138. //ID_SUPERCLASS : ID;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement