89 lines
1.6 KiB
Plaintext
89 lines
1.6 KiB
Plaintext
|
|
%option nounput
|
|
%option bison-locations
|
|
|
|
%{
|
|
|
|
#include "parser.tab.hh"
|
|
|
|
%}
|
|
|
|
%%
|
|
|
|
/* operators */
|
|
:= return ASSIGN;
|
|
::= return DASSIGN;
|
|
== return DEQUALS;
|
|
\/ return DIVIDE;
|
|
= return EQUALS;
|
|
\> return GREATER;
|
|
\< return LESS;
|
|
=~ return MATCH;
|
|
- return MINUS;
|
|
% return MOD;
|
|
\+ return PLUS;
|
|
\* return STAR;
|
|
|
|
/* punctuation */
|
|
: return COLON;
|
|
, return COMMA;
|
|
:: return DCOLON;
|
|
\$ return DOLLAR;
|
|
\. return DOT;
|
|
\<- return FROM;
|
|
\? return QUESTION;
|
|
; return SEMICOLON;
|
|
|
|
\{ return LCURLY;
|
|
\} return RCURLY;
|
|
\[ return LBRACKET;
|
|
\] return RBRACKET;
|
|
\( return LPAREN;
|
|
\) return RPAREN;
|
|
|
|
/* literals */
|
|
[0-9]+ {
|
|
return INT_LITERAL;
|
|
}
|
|
0x[0-9A-Fa-f]+ {
|
|
return INT_LITERAL;
|
|
}
|
|
0b[01]+ {
|
|
return INT_LITERAL;
|
|
}
|
|
[0-9]*\.[0-9]+([eE]-?[0-9]+)? {
|
|
return REAL_LITERAL;
|
|
}
|
|
|
|
/* primitive types */
|
|
byte return BYTE;
|
|
ubyte return UBYTE;
|
|
char return CHAR;
|
|
wchar return WCHAR;
|
|
short return SHORT;
|
|
ushort return USHORT;
|
|
int return INT;
|
|
uint return UINT;
|
|
long return LONG;
|
|
ulong return ULONG;
|
|
|
|
/* keywords */
|
|
import return IMPORT;
|
|
module return MODULE;
|
|
return return RETURN;
|
|
struct return STRUCT;
|
|
|
|
/* identifiers */
|
|
[a-zA-Z_][a-zA-Z_0-9]* {
|
|
return IDENTIFIER;
|
|
}
|
|
|
|
/* whitespace */
|
|
\n yylloc->first_line++; yylloc->last_line++;
|
|
[ \t\v] /* ignore whitespace */
|
|
|
|
/* anything else */
|
|
. return yytext[0];
|
|
|
|
%%
|