aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/LuaSL/src/LuaSL_lexer.l
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-08 23:47:09 +1000
committerDavid Walter Seikel2012-01-08 23:47:09 +1000
commitaa7be467e110de4d3757fc7e0697d89f397aea34 (patch)
tree73dc6df5109837780a20ff45486269d056b7a459 /LuaSL/src/LuaSL_lexer.l
parentBite the bullet and get rid of my dreams to use enums, yacc insists on #defines. (diff)
downloadSledjHamr-aa7be467e110de4d3757fc7e0697d89f397aea34.zip
SledjHamr-aa7be467e110de4d3757fc7e0697d89f397aea34.tar.gz
SledjHamr-aa7be467e110de4d3757fc7e0697d89f397aea34.tar.bz2
SledjHamr-aa7be467e110de4d3757fc7e0697d89f397aea34.tar.xz
Rearrange everything, to be consistant order.
Diffstat (limited to 'LuaSL/src/LuaSL_lexer.l')
-rw-r--r--LuaSL/src/LuaSL_lexer.l20
1 files changed, 13 insertions, 7 deletions
diff --git a/LuaSL/src/LuaSL_lexer.l b/LuaSL/src/LuaSL_lexer.l
index 2166743..9753a57 100644
--- a/LuaSL/src/LuaSL_lexer.l
+++ b/LuaSL/src/LuaSL_lexer.l
@@ -20,21 +20,19 @@
20%option align full 20%option align full
21 21
22HEX [[:xdigit:]] 22HEX [[:xdigit:]]
23NAME [[:alpha:]](_|[[:alpha:]]|[[:digit:]])*
24INTEGER [[:digit:]]+ 23INTEGER [[:digit:]]+
25EXPONANT [eE][+-]?{INTEGER} 24EXPONANT [eE][+-]?{INTEGER}
26FLOAT {INTEGER}("."{INTEGER})?{EXPONANT}? 25FLOAT {INTEGER}("."{INTEGER})?{EXPONANT}?
26NAME [[:alpha:]](_|[[:alpha:]]|[[:digit:]])*
27 27
28%% 28%%
29 29
30 /* Basic tokens */ 30 /* The order here is important, in mysterious ways. The more specific the lower in case of ambiguities like "floats contain integers". I think, not tested that well yet. */
31
32 /* White space. */
31[[:space:]]+ %{ /* ECHO; yylval->spaceValue = strdup(yytext); return LSL_SPACE; */ %} 33[[:space:]]+ %{ /* ECHO; yylval->spaceValue = strdup(yytext); return LSL_SPACE; */ %}
32{NAME} %{ ECHO; /* yylval->nameValue = strdup(yytext); return LSL_NAME; */ %}
33{INTEGER} %{ ECHO; yylval->integerValue = atoi(yytext); return LSL_INTEGER; %}
34{FLOAT} %{ ECHO; /* yylval->floatValue = atof(yytext); return LSL_FLOAT; */ %}
35 34
36 /* Expression tokens */ 35 /* Operations. */
37";" { ECHO; return LSL_STATEMENT; }
38"&&" { ECHO; return LSL_BOOL_AND; } 36"&&" { ECHO; return LSL_BOOL_AND; }
39"||" { ECHO; return LSL_BOOL_OR; } 37"||" { ECHO; return LSL_BOOL_OR; }
40"|" { ECHO; return LSL_BIT_OR; } 38"|" { ECHO; return LSL_BIT_OR; }
@@ -58,6 +56,14 @@ FLOAT {INTEGER}("."{INTEGER})?{EXPONANT}?
58"(" { ECHO; return LSL_PARENTHESIS_OPEN; } 56"(" { ECHO; return LSL_PARENTHESIS_OPEN; }
59")" { ECHO; return LSL_PARENTHESIS_CLOSE; } 57")" { ECHO; return LSL_PARENTHESIS_CLOSE; }
60 58
59 /* Types. */
60{INTEGER} %{ ECHO; yylval->integerValue = atoi(yytext); return LSL_INTEGER; %}
61{FLOAT} %{ ECHO; /* yylval->floatValue = atof(yytext); return LSL_FLOAT; */ %}
62
63{NAME} %{ ECHO; /* yylval->nameValue = strdup(yytext); return LSL_NAME; */ %}
64
65";" { ECHO; return LSL_STATEMENT; }
66
61<<EOF>> { yyterminate(); } 67<<EOF>> { yyterminate(); }
62 68
63 /* Everything else */ 69 /* Everything else */