jtlc/parser/parser.lex
josh e83a2f1f08 updated grammar a bit
git-svn-id: svn://anubis/jtlc/trunk@5 f5bc74b8-7b62-4e90-9214-7121d538519f
2010-01-12 17:40:16 +00:00

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];
%%