From f1a48f173922785a4f18ad789f1d0cd7080bb3d1 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Fri, 6 Jan 2012 18:50:14 +1000 Subject: Added most of the expression parser. --- LuaSL/src/LuaSL_lexer.l | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'LuaSL/src/LuaSL_lexer.l') diff --git a/LuaSL/src/LuaSL_lexer.l b/LuaSL/src/LuaSL_lexer.l index c496d1d..11c20a0 100644 --- a/LuaSL/src/LuaSL_lexer.l +++ b/LuaSL/src/LuaSL_lexer.l @@ -17,19 +17,45 @@ %option bison-bridge SPACE [ \r\n\t]* -NAME [a-zA-Z_][a-zA-Z0-9_]* -NUMBER [0-9]+ +LETTER [A-Za-z] +DECIMAL [0-9] +HEX [0-9A-Fa-f] + +NAME {LETTER}(_|{LETTER}|{DECIMAL})* +INTEGER {DECIMAL}+ +EXPONANT [eE][+-]?{INTEGER} +FLOAT {INTEGER}("."{INTEGER})?{EXPONANT}? %% {SPACE} { ECHO; /* Skip blanks. */ } {NAME} { ECHO; /* yylval->nameValue=strdup(yytext); return LSL_NAME; */ } -{NUMBER} { ECHO; yylval->integerValue = atoi(yytext); return LSL_INTEGER; } +{INTEGER} { ECHO; yylval->integerValue = atoi(yytext); return LSL_INTEGER; } +{FLOAT} { ECHO; /* yylval->floatValue = atof(yytext); return LSL_FLOAT; */ } +"&&" { ECHO; return LSL_BOOL_AND; } +"||" { ECHO; return LSL_BOOL_OR; } +"|" { ECHO; return LSL_BIT_OR; } +"^" { ECHO; return LSL_BIT_XOR; } +"&" { ECHO; return LSL_BIT_AND; } +"!=" { ECHO; return LSL_NOT_EQUAL; } +"==" { ECHO; return LSL_EQUAL; } +">=" { ECHO; return LSL_GREATER_EQUAL; } +"<=" { ECHO; return LSL_LESS_EQUAL; } +">" { ECHO; return LSL_GREATER_THAN; } +"<" { ECHO; return LSL_LESS_THAN; } +">>" { ECHO; return LSL_RIGHT_SHIFT; } +"<<" { ECHO; return LSL_LEFT_SHIFT; } +"+" { ECHO; return LSL_ADD; } +"-" { ECHO; return LSL_SUBTRACT; } +"*" { ECHO; return LSL_MULTIPLY; } +"%" { ECHO; return LSL_MODULO; } +"/" { ECHO; return LSL_DIVIDE; } +"!" { ECHO; return LSL_BOOL_NOT; } +"~" { ECHO; return LSL_BIT_NOT; } "(" { ECHO; return LSL_PARENTHESIS_OPEN; } ")" { ECHO; return LSL_PARENTHESIS_CLOSE; } -"*" { ECHO; return LSL_MULTIPLY; } -"+" { ECHO; return LSL_ADD; } + . { ECHO; printf(" unexpected character.\n"); } %% -- cgit v1.1