111 lines
2.8 KiB
Plaintext
111 lines
2.8 KiB
Plaintext
unit dpglib.TokenLexer;
|
|
|
|
lexer TTokenLexer;
|
|
options
|
|
{
|
|
k = 2;
|
|
testLiterals = false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Simple tokens
|
|
// ----------------------------------------------------------------------------
|
|
LPAREN : '(';
|
|
RPAREN : ')';
|
|
ASSIGN : '=';
|
|
STRING : '"' (~'"')* '"';
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// DIGIT
|
|
// ----------------------------------------------------------------------------
|
|
protected
|
|
DIGIT
|
|
: '0'..'9'
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// XDIGIT
|
|
// ----------------------------------------------------------------------------
|
|
protected
|
|
XDIGIT
|
|
: '0'..'9'
|
|
| 'a'..'f'
|
|
| 'A'..'F'
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// ID
|
|
// ----------------------------------------------------------------------------
|
|
ID
|
|
: ('a'..'z' | 'A'..'Z')
|
|
('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// INT
|
|
// ----------------------------------------------------------------------------
|
|
INT
|
|
: (DIGIT)+
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// WS
|
|
// ----------------------------------------------------------------------------
|
|
WS
|
|
:
|
|
(
|
|
' '
|
|
| '\t'
|
|
| '\r' '\n' { newLine; }
|
|
| '\r' { newLine; }
|
|
| '\n' { newLine; }
|
|
)
|
|
{
|
|
_ttype := TT_SKIP;
|
|
}
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// SLCOMMENT
|
|
// ----------------------------------------------------------------------------
|
|
SLCOMMENT
|
|
: "//"
|
|
( ~( '\r' | '\n'))*
|
|
(
|
|
options
|
|
{
|
|
generateAmbigWarnings = false;
|
|
}
|
|
: '\r' '\n' { newLine; }
|
|
| '\r' { newLine; }
|
|
| '\n' { newLine; }
|
|
)
|
|
{
|
|
_ttype := TT_SKIP;
|
|
}
|
|
;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// MLCOMMENT
|
|
// ----------------------------------------------------------------------------
|
|
MLCOMMENT
|
|
: "(*"
|
|
|
|
(
|
|
options
|
|
{
|
|
greedy = false;
|
|
generateAmbigWarnings= false;
|
|
}
|
|
: '\r' '\n' { newLine; }
|
|
| '\r' { newLine; }
|
|
| '\n' { newLine; }
|
|
| ~('\r' | '\n')
|
|
)*
|
|
|
|
"*)"
|
|
{
|
|
_ttype := TT_SKIP;
|
|
}
|
|
;
|