From 1e6a3b715654c9458d4e8619474bfcb947a37343 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 16 Jan 2012 01:12:56 +1000 Subject: Add key and string to the parser. --- LuaSL/src/LuaSL_lemon_yaccer.y | 2 ++ LuaSL/src/LuaSL_lexer.l | 3 +++ 2 files changed, 5 insertions(+) (limited to 'LuaSL') diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index 9d08fa9..32d6b46 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y @@ -74,9 +74,11 @@ expr(A) ::= LSL_FLOAT(B). { B->basicType = OT_float; A = B; } %nonassoc LSL_INTEGER. expr(A) ::= LSL_INTEGER(B). { B->basicType = OT_integer; A = B; } %nonassoc LSL_KEY. +expr(A) ::= LSL_KEY(B). { B->basicType = OT_key; A = B; } %nonassoc LSL_LIST. %nonassoc LSL_ROTATION. %nonassoc LSL_STRING. +expr(A) ::= LSL_STRING(B). { B->basicType = OT_string; A = B; } %nonassoc LSL_VECTOR. %nonassoc LSL_DO LSL_FOR LSL_ELSE LSL_ELSE_IF LSL_IF LSL_JUMP LSL_RETURN LSL_STATE_CHANGE LSL_WHILE. diff --git a/LuaSL/src/LuaSL_lexer.l b/LuaSL/src/LuaSL_lexer.l index 876d30a..333489a 100644 --- a/LuaSL/src/LuaSL_lexer.l +++ b/LuaSL/src/LuaSL_lexer.l @@ -22,6 +22,7 @@ EXPONANT [eE][+-]?{DECIMAL}+ /* Floats can be "0." or".0", but "." is not valid. At least in OpenSim. A single dot should be caught by the LSL_Dot rule first anyway.*/ FLOAT {DECIMAL}*"."{DECIMAL}*{EXPONANT}?[fF]? CHAR '(\\.|[^\\'\n])+' +KEY \"{HEX}{8}-{HEX}{4}-{HEX}{4}-{HEX}{4}-{HEX}{12}\" STRING \"(\\.|[^\\"\n])*\" IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])* @@ -74,6 +75,8 @@ IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])* /* Types. */ {INTEGER} %{ yylval->value.integerValue = atoi(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_INTEGER); %} {FLOAT} %{ yylval->value.floatValue = atof(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_FLOAT); %} +{KEY} %{ yylval->value.stringValue = strdup(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_KEY); %} +{STRING} %{ yylval->value.stringValue = strdup(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_STRING); %} /* Type keywords. */ "float" %{ return common(yylval, yytext, yyextra, TRUE, LSL_TYPE_FLOAT); %} -- cgit v1.1