diff options
author | David Walter Seikel | 2012-01-16 01:12:56 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-16 01:12:56 +1000 |
commit | 1e6a3b715654c9458d4e8619474bfcb947a37343 (patch) | |
tree | b297eae518d46c7bbfc5580a93559f72b3061b18 /LuaSL | |
parent | Clean up space. (diff) | |
download | SledjHamr-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.y | 2 | ||||
-rw-r--r-- | LuaSL/src/LuaSL_lexer.l | 3 |
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. |
75 | expr(A) ::= LSL_INTEGER(B). { B->basicType = OT_integer; A = B; } | 75 | expr(A) ::= LSL_INTEGER(B). { B->basicType = OT_integer; A = B; } |
76 | %nonassoc LSL_KEY. | 76 | %nonassoc LSL_KEY. |
77 | expr(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. |
81 | expr(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.*/ |
23 | FLOAT {DECIMAL}*"."{DECIMAL}*{EXPONANT}?[fF]? | 23 | FLOAT {DECIMAL}*"."{DECIMAL}*{EXPONANT}?[fF]? |
24 | CHAR '(\\.|[^\\'\n])+' | 24 | CHAR '(\\.|[^\\'\n])+' |
25 | KEY \"{HEX}{8}-{HEX}{4}-{HEX}{4}-{HEX}{4}-{HEX}{12}\" | ||
25 | STRING \"(\\.|[^\\"\n])*\" | 26 | STRING \"(\\.|[^\\"\n])*\" |
26 | IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])* | 27 | IDENTIFIER [[: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); %} |