diff options
author | David Walter Seikel | 2012-01-10 01:43:10 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-10 01:43:10 +1000 |
commit | ff5b1c802a26789ff769521262db79854b24939b (patch) | |
tree | 609c9ff857c837bf84d9dd71fe5c1fb7cf3778fd /LuaSL/src/LuaSL_yaccer.y | |
parent | Hmmm, we have a circular dependencie with the include fiels each of flex and ... (diff) | |
download | SledjHamr-ff5b1c802a26789ff769521262db79854b24939b.zip SledjHamr-ff5b1c802a26789ff769521262db79854b24939b.tar.gz SledjHamr-ff5b1c802a26789ff769521262db79854b24939b.tar.bz2 SledjHamr-ff5b1c802a26789ff769521262db79854b24939b.tar.xz |
Almost got white space and comments working. Still a bug left somewhere, I think it's in operations ordering.
Diffstat (limited to '')
-rw-r--r-- | LuaSL/src/LuaSL_yaccer.y | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/LuaSL/src/LuaSL_yaccer.y b/LuaSL/src/LuaSL_yaccer.y index 4b456b1..ed69dd3 100644 --- a/LuaSL/src/LuaSL_yaccer.y +++ b/LuaSL/src/LuaSL_yaccer.y | |||
@@ -10,10 +10,9 @@ | |||
10 | %define api.pure | 10 | %define api.pure |
11 | 11 | ||
12 | 12 | ||
13 | %type <spaceValue> ignorable | 13 | %token <value.spaceValue> LSL_SPACE /* Never actually emitted, but we need it in the token table. */ |
14 | %token <spaceValue> LSL_SPACE | ||
15 | 14 | ||
16 | %type <expressionValue> expr | 15 | %type <value.expressionValue> expr |
17 | %left LSL_BOOL_AND | 16 | %left LSL_BOOL_AND |
18 | %left LSL_BOOL_OR | 17 | %left LSL_BOOL_OR |
19 | %left LSL_BIT_AND LSL_BIT_XOR LSL_BIT_OR | 18 | %left LSL_BIT_AND LSL_BIT_XOR LSL_BIT_OR |
@@ -31,8 +30,8 @@ | |||
31 | %right LSL_DECREMENT_PRE LSL_INCREMENT_PRE | 30 | %right LSL_DECREMENT_PRE LSL_INCREMENT_PRE |
32 | %token LSL_COMMA | 31 | %token LSL_COMMA |
33 | 32 | ||
34 | %token <floatValue> LSL_FLOAT | 33 | %token <value.floatValue> LSL_FLOAT |
35 | %token <integerValue> LSL_INTEGER | 34 | %token <value.integerValue> LSL_INTEGER |
36 | 35 | ||
37 | %nonassoc LSL_TYPE_FLOAT LSL_TYPE_INTEGER LSL_TYPE_KEY LSL_TYPE_LIST LSL_TYPE_ROTATION LSL_TYPE_STRING LSL_TYPE_VECTOR | 36 | %nonassoc LSL_TYPE_FLOAT LSL_TYPE_INTEGER LSL_TYPE_KEY LSL_TYPE_LIST LSL_TYPE_ROTATION LSL_TYPE_STRING LSL_TYPE_VECTOR |
38 | 37 | ||
@@ -42,47 +41,43 @@ | |||
42 | 41 | ||
43 | %nonassoc LSL_BLOCK_OPEN LSL_BLOCK_CLOSE | 42 | %nonassoc LSL_BLOCK_OPEN LSL_BLOCK_CLOSE |
44 | 43 | ||
45 | %type <statementValue> statement | 44 | %type <value.statementValue> statement |
46 | %nonassoc LSL_STATEMENT | 45 | %nonassoc LSL_STATEMENT |
47 | 46 | ||
48 | %type <scriptValue> script | 47 | %type <value.scriptValue> script |
49 | 48 | ||
50 | %% | 49 | %% |
51 | 50 | ||
52 | input : | 51 | input : |
53 | ignorable | 52 | expr { ((LuaSL_yyparseParam*)data)->ast = addOperation(&yylval, LSL_EXPRESSION, $1, $1); } |
54 | | expr { ((LuaSL_yyparseParam*)data)->ast = addOperation(LSL_EXPRESSION, $1, $1); } | ||
55 | | statement { ((LuaSL_yyparseParam*)data)->ast = addStatement($1, ((LuaSL_yyparseParam*)data)->ast); } | 53 | | statement { ((LuaSL_yyparseParam*)data)->ast = addStatement($1, ((LuaSL_yyparseParam*)data)->ast); } |
56 | | script | 54 | | script |
57 | ; | 55 | ; |
58 | 56 | ||
59 | ignorable : LSL_SPACE { ((LuaSL_yyparseParam*)data)->ast = addSpace($1, ((LuaSL_yyparseParam*)data)->ast); } | ||
60 | ; | ||
61 | |||
62 | expr : | 57 | expr : |
63 | expr LSL_BOOL_AND expr { $$ = addOperation( LSL_BOOL_AND, $1, $3 ); } | 58 | expr LSL_BOOL_AND expr { $$ = addOperation(&yylval, LSL_BOOL_AND, $1, $3); } |
64 | | expr LSL_BOOL_OR expr { $$ = addOperation( LSL_BOOL_OR, $1, $3 ); } | 59 | | expr LSL_BOOL_OR expr { $$ = addOperation(&yylval, LSL_BOOL_OR, $1, $3); } |
65 | | expr LSL_BIT_OR expr { $$ = addOperation( LSL_BIT_OR, $1, $3 ); } | 60 | | expr LSL_BIT_OR expr { $$ = addOperation(&yylval, LSL_BIT_OR, $1, $3); } |
66 | | expr LSL_BIT_XOR expr { $$ = addOperation( LSL_BIT_XOR, $1, $3 ); } | 61 | | expr LSL_BIT_XOR expr { $$ = addOperation(&yylval, LSL_BIT_XOR, $1, $3); } |
67 | | expr LSL_BIT_AND expr { $$ = addOperation( LSL_BIT_AND, $1, $3 ); } | 62 | | expr LSL_BIT_AND expr { $$ = addOperation(&yylval, LSL_BIT_AND, $1, $3); } |
68 | | expr LSL_NOT_EQUAL expr { $$ = addOperation( LSL_NOT_EQUAL, $1, $3 ); } | 63 | | expr LSL_NOT_EQUAL expr { $$ = addOperation(&yylval, LSL_NOT_EQUAL, $1, $3); } |
69 | | expr LSL_EQUAL expr { $$ = addOperation( LSL_EQUAL, $1, $3 ); } | 64 | | expr LSL_EQUAL expr { $$ = addOperation(&yylval, LSL_EQUAL, $1, $3); } |
70 | | expr LSL_GREATER_EQUAL expr { $$ = addOperation( LSL_GREATER_EQUAL, $1, $3 ); } | 65 | | expr LSL_GREATER_EQUAL expr { $$ = addOperation(&yylval, LSL_GREATER_EQUAL, $1, $3); } |
71 | | expr LSL_LESS_EQUAL expr { $$ = addOperation( LSL_LESS_EQUAL, $1, $3 ); } | 66 | | expr LSL_LESS_EQUAL expr { $$ = addOperation(&yylval, LSL_LESS_EQUAL, $1, $3); } |
72 | | expr LSL_GREATER_THAN expr { $$ = addOperation( LSL_GREATER_THAN, $1, $3 ); } | 67 | | expr LSL_GREATER_THAN expr { $$ = addOperation(&yylval, LSL_GREATER_THAN, $1, $3); } |
73 | | expr LSL_LESS_THAN expr { $$ = addOperation( LSL_LESS_THAN, $1, $3 ); } | 68 | | expr LSL_LESS_THAN expr { $$ = addOperation(&yylval, LSL_LESS_THAN, $1, $3); } |
74 | | expr LSL_RIGHT_SHIFT expr { $$ = addOperation( LSL_RIGHT_SHIFT, $1, $3 ); } | 69 | | expr LSL_RIGHT_SHIFT expr { $$ = addOperation(&yylval, LSL_RIGHT_SHIFT, $1, $3); } |
75 | | expr LSL_LEFT_SHIFT expr { $$ = addOperation( LSL_LEFT_SHIFT, $1, $3 ); } | 70 | | expr LSL_LEFT_SHIFT expr { $$ = addOperation(&yylval, LSL_LEFT_SHIFT, $1, $3); } |
76 | | expr LSL_ADD expr { $$ = addOperation( LSL_ADD, $1, $3 ); } | 71 | | expr LSL_ADD expr { $$ = addOperation(&yylval, LSL_ADD, $1, $3); } |
77 | | expr LSL_SUBTRACT expr { $$ = addOperation( LSL_SUBTRACT, $1, $3 ); } | 72 | | expr LSL_SUBTRACT expr { $$ = addOperation(&yylval, LSL_SUBTRACT, $1, $3); } |
78 | | expr LSL_MULTIPLY expr { $$ = addOperation( LSL_MULTIPLY, $1, $3 ); } | 73 | | expr LSL_MULTIPLY expr { $$ = addOperation(&yylval, LSL_MULTIPLY, $1, $3); } |
79 | | expr LSL_MODULO expr { $$ = addOperation( LSL_MODULO, $1, $3 ); } | 74 | | expr LSL_MODULO expr { $$ = addOperation(&yylval, LSL_MODULO, $1, $3); } |
80 | | expr LSL_DIVIDE expr { $$ = addOperation( LSL_DIVIDE, $1, $3 ); } | 75 | | expr LSL_DIVIDE expr { $$ = addOperation(&yylval, LSL_DIVIDE, $1, $3); } |
81 | | LSL_BIT_NOT expr { $$ = addOperation( LSL_BIT_NOT, NULL, $2 ); } | 76 | | LSL_BIT_NOT expr { $$ = addOperation(&yylval, LSL_BIT_NOT, NULL, $2); } |
82 | | LSL_BOOL_NOT expr { $$ = addOperation( LSL_BOOL_NOT, NULL, $2 ); } | 77 | | LSL_BOOL_NOT expr { $$ = addOperation(&yylval, LSL_BOOL_NOT, NULL, $2); } |
83 | | LSL_SUBTRACT expr { $$ = addOperation( LSL_NEGATION, NULL, $2 ); } %prec LSL_NEGATION | 78 | | LSL_SUBTRACT expr { $$ = addOperation(&yylval, LSL_NEGATION, NULL, $2); } %prec LSL_NEGATION |
84 | | LSL_PARENTHESIS_OPEN expr LSL_PARENTHESIS_CLOSE { $$ = addParenthesis($2); } | 79 | | LSL_PARENTHESIS_OPEN expr LSL_PARENTHESIS_CLOSE { $$ = addParenthesis(&yylval, $2); } |
85 | | LSL_INTEGER { $$ = addInteger($1); } | 80 | | LSL_INTEGER { $$ = addInteger(&yylval, $1); } |
86 | ; | 81 | ; |
87 | 82 | ||
88 | statement : expr LSL_STATEMENT { $$ = createStatement(LSL_EXPRESSION, $1); YYVALID; } | 83 | statement : expr LSL_STATEMENT { $$ = createStatement(LSL_EXPRESSION, $1); YYVALID; } |