Advertisement
Guest User

Lexer Grammar

a guest
Jan 30th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. /******************************************************************************\
  2. * Essex Lexer
  3. */
  4. lexer grammar essex_lexer;
  5.  
  6. ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
  7.  
  8. INT : BININT
  9. | OCTINT
  10. | DECINT
  11. | HEXINT
  12. ;
  13.  
  14. BININT : '0b' BIN_DIGIT+
  15. ;
  16.  
  17. OCTINT : '0o' OCT_DIGIT+
  18. ;
  19.  
  20. DECINT : DIGIT+
  21. ;
  22.  
  23. HEXINT : '0x' HEX_DIGIT+
  24. ;
  25.  
  26. FLOAT : DIGIT+ '.' DIGIT+ EXPONENT?
  27. | DIGIT+ EXPONENT
  28. | DIGIT+ 'f'
  29. ;
  30.  
  31. fragment
  32. BIN_DIGIT
  33. : ('0' | '1')
  34. ;
  35.  
  36. fragment
  37. OCT_DIGIT
  38. : ('0'..'7')
  39. ;
  40.  
  41. fragment
  42. DIGIT
  43. : ('0'..'9')
  44. ;
  45.  
  46. fragment
  47. HEX_DIGIT
  48. : (DIGIT | 'a'..'f' | 'A'..'F')
  49. ;
  50.  
  51.  
  52. fragment
  53. EXPONENT: ('e'|'E') ('+'|'-')? DIGIT+ ;
  54.  
  55. WS : ( ' ' | '\t' | '\r' | '\n' ) {$channel=HIDDEN;} ;
  56.  
  57. STRING : '"' ( ESC_SEQ | ~('\\'|'"') )* '"' ;
  58.  
  59. CHAR : '\''( ESC_SEQ | ~('\''|'\\')) '\'' ;
  60.  
  61. fragment
  62. ESC_SEQ : '\\' ('\\'|'\''|'\"'|'a'|'b'|'f'|'n'|'r'|'t'|'v') | OCT_ESC | HEX_ESC | UNICODE_ESC ;
  63.  
  64. fragment
  65. HEX_ESC : '\\x' HEX_DIGIT HEX_DIGIT ;
  66.  
  67. fragment
  68. OCT_ESC
  69. : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
  70. | '\\' ('0'..'7') ('0'..'7')
  71. | '\\' ('0'..'7')
  72. ;
  73.  
  74. fragment
  75. UNICODE_ESC
  76. : '\\u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
  77. | '\\U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
  78. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement