Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. lexer grammar PrevLexer;
  2.  
  3. @header {
  4. package prev.phase.lexan;
  5. import prev.common.report.*;
  6. }
  7.  
  8. @members {
  9. @Override
  10. public LexAn.PrevToken nextToken() {
  11. return (LexAn.PrevToken) super.nextToken();
  12. }
  13. }
  14.  
  15. COMMENT: '#'~('\r'|'\n')*;
  16.  
  17. CONST_CHAR: '\''[\u0020-\u0026\u0028-\u007E]'\'' | '\'\\\'\'';
  18.  
  19. CONST_STRING: '"'[\u0020-\u0021\u0023-\u007E]*'"' | '"\\""';
  20.  
  21. CONST_INTEGER: [+-]?[0-9]+;
  22.  
  23. CONST_LITERAL: 'nil';
  24.  
  25. KW_BOOLEAN: 'boolean';
  26. KW_CHAR: 'char';
  27. KW_DEL: 'del';
  28. KW_DO: 'do';
  29. KW_ELSE: 'else';
  30. KW_FUN: 'fun';
  31. KW_IF: 'if';
  32. KW_INTEGER: 'integer';
  33. KW_NEW: 'new';
  34. KW_THEN: 'then';
  35. KW_TYP: 'typ';
  36. KW_VAR: 'var';
  37. KW_VOID: 'void';
  38. KW_WHERE: 'where';
  39. KW_WHILE: 'while';
  40.  
  41. CONST_BOOLEAN: 'true' | 'false';
  42.  
  43. CONST_VOID: 'none';
  44.  
  45. INDETIFIER: [A-Za-z_][A-Za-z0-9_]*;
  46.  
  47. SIM_LPAR: '(';
  48. SIM_RPAR: ')';
  49. SIM_LSQLBR: '{';
  50. SIM_RSQLBR: '}';
  51. SIM_LSQRBR: '[';
  52. SIM_RSQRBR: ']';
  53. SIM_DOT: '.';
  54. SIM_COM: ',';
  55. SIM_COL: ':';
  56. SIM_SCOL: ';';
  57. SIM_AND: '&';
  58. SIM_LINE: '|';
  59. SIM_EKSP: '!';
  60. SIM_EQU: '==';
  61. SIM_NEQU: '!=';
  62. SIM_LT: '<';
  63. SIM_GT: '>';
  64. SIM_LTEQU: '<=';
  65. SIM_GTEQU: '>=';
  66. SIM_STAR: '*';
  67. SIM_SLH: '/';
  68. SIM_PRCNT: '%';
  69. SIM_PLUS: '+';
  70. SIM_MINUS: '-';
  71. SIM_TOP: '^';
  72. SIM_IS: '=';
  73.  
  74. SPACE: [ \n\r]+ -> skip;
  75. TAB: [\t] {this.setCharPositionInLine(getCharPositionInLine() + 7);} -> skip;
  76.  
  77. ERROR: [\u0000-\u007F] {throw new ParseCancellationException();};
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement