Files
bds.mr.dpg/src.lib/grammar/dpglib.TokenLexer.g
T
2026-01-03 18:33:48 +01:00

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;
}
;