aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/LuaSL
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-16 01:12:56 +1000
committerDavid Walter Seikel2012-01-16 01:12:56 +1000
commit1e6a3b715654c9458d4e8619474bfcb947a37343 (patch)
treeb297eae518d46c7bbfc5580a93559f72b3061b18 /LuaSL
parentClean up space. (diff)
downloadSledjHamr-1e6a3b715654c9458d4e8619474bfcb947a37343.zip
SledjHamr-1e6a3b715654c9458d4e8619474bfcb947a37343.tar.gz
SledjHamr-1e6a3b715654c9458d4e8619474bfcb947a37343.tar.bz2
SledjHamr-1e6a3b715654c9458d4e8619474bfcb947a37343.tar.xz
Add key and string to the parser.
Diffstat (limited to 'LuaSL')
-rw-r--r--LuaSL/src/LuaSL_lemon_yaccer.y2
-rw-r--r--LuaSL/src/LuaSL_lexer.l3
2 files changed, 5 insertions, 0 deletions
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; }
74%nonassoc LSL_INTEGER. 74%nonassoc LSL_INTEGER.
75expr(A) ::= LSL_INTEGER(B). { B->basicType = OT_integer; A = B; } 75expr(A) ::= LSL_INTEGER(B). { B->basicType = OT_integer; A = B; }
76%nonassoc LSL_KEY. 76%nonassoc LSL_KEY.
77expr(A) ::= LSL_KEY(B). { B->basicType = OT_key; A = B; }
77%nonassoc LSL_LIST. 78%nonassoc LSL_LIST.
78%nonassoc LSL_ROTATION. 79%nonassoc LSL_ROTATION.
79%nonassoc LSL_STRING. 80%nonassoc LSL_STRING.
81expr(A) ::= LSL_STRING(B). { B->basicType = OT_string; A = B; }
80%nonassoc LSL_VECTOR. 82%nonassoc LSL_VECTOR.
81 83
82%nonassoc LSL_DO LSL_FOR LSL_ELSE LSL_ELSE_IF LSL_IF LSL_JUMP LSL_RETURN LSL_STATE_CHANGE LSL_WHILE. 84%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}+
22 /* 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.*/ 22 /* 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.*/
23FLOAT {DECIMAL}*"."{DECIMAL}*{EXPONANT}?[fF]? 23FLOAT {DECIMAL}*"."{DECIMAL}*{EXPONANT}?[fF]?
24CHAR '(\\.|[^\\'\n])+' 24CHAR '(\\.|[^\\'\n])+'
25KEY \"{HEX}{8}-{HEX}{4}-{HEX}{4}-{HEX}{4}-{HEX}{12}\"
25STRING \"(\\.|[^\\"\n])*\" 26STRING \"(\\.|[^\\"\n])*\"
26IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])* 27IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])*
27 28
@@ -74,6 +75,8 @@ IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])*
74 /* Types. */ 75 /* Types. */
75{INTEGER} %{ yylval->value.integerValue = atoi(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_INTEGER); %} 76{INTEGER} %{ yylval->value.integerValue = atoi(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_INTEGER); %}
76{FLOAT} %{ yylval->value.floatValue = atof(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_FLOAT); %} 77{FLOAT} %{ yylval->value.floatValue = atof(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_FLOAT); %}
78{KEY} %{ yylval->value.stringValue = strdup(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_KEY); %}
79{STRING} %{ yylval->value.stringValue = strdup(yytext); return common(yylval, yytext, yyextra, TRUE, LSL_STRING); %}
77 80
78 /* Type keywords. */ 81 /* Type keywords. */
79"float" %{ return common(yylval, yytext, yyextra, TRUE, LSL_TYPE_FLOAT); %} 82"float" %{ return common(yylval, yytext, yyextra, TRUE, LSL_TYPE_FLOAT); %}