diff options
Diffstat (limited to 'LuaSL/src/LuaSL_lemon_yaccer.y')
-rw-r--r-- | LuaSL/src/LuaSL_lemon_yaccer.y | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index a43885f..83aff23 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y | |||
@@ -11,7 +11,7 @@ | |||
11 | %token_destructor {burnLeaf($$);} | 11 | %token_destructor {burnLeaf($$);} |
12 | 12 | ||
13 | 13 | ||
14 | program ::= script LSL_SCRIPT(A). { A->left = param->ast; param->ast = A; } // Lemon does not like the start symbol to be on the RHS, so give it a dummy one. | 14 | program ::= script LSL_SCRIPT(A). { if (NULL != A) A->left = param->ast; param->ast = A; } // Lemon does not like the start symbol to be on the RHS, so give it a dummy one. |
15 | 15 | ||
16 | %right LSL_BOOL_AND. | 16 | %right LSL_BOOL_AND. |
17 | expr(A) ::= expr(B) LSL_BOOL_AND(C) expr(D). { A = addOperation(B, C, D); } | 17 | expr(A) ::= expr(B) LSL_BOOL_AND(C) expr(D). { A = addOperation(B, C, D); } |
@@ -68,7 +68,7 @@ exprList ::= expr. | |||
68 | exprList ::= . | 68 | exprList ::= . |
69 | expr ::= LSL_IDENTIFIER LSL_PARENTHESIS_OPEN exprList LSL_PARENTHESIS_CLOSE. | 69 | expr ::= LSL_IDENTIFIER LSL_PARENTHESIS_OPEN exprList LSL_PARENTHESIS_CLOSE. |
70 | expr(A) ::= LSL_PARENTHESIS_OPEN(B) expr(C) LSL_PARENTHESIS_CLOSE(D). { A = addParenthesis(B, C, D); } | 70 | expr(A) ::= LSL_PARENTHESIS_OPEN(B) expr(C) LSL_PARENTHESIS_CLOSE(D). { A = addParenthesis(B, C, D); } |
71 | expr(A) ::= LSL_PARENTHESIS_OPEN(B) type(C) LSL_PARENTHESIS_CLOSE(D). { A = addTypecast(B, C, D); } | 71 | expr(A) ::= LSL_PARENTHESIS_OPEN(B) type(C) LSL_PARENTHESIS_CLOSE(D) expr(E). { A = addTypecast(B, C, D, E); } |
72 | 72 | ||
73 | %right LSL_ASSIGNMENT_CONCATENATE LSL_ASSIGNMENT_ADD LSL_ASSIGNMENT_SUBTRACT LSL_ASSIGNMENT_MULTIPLY LSL_ASSIGNMENT_MODULO LSL_ASSIGNMENT_DIVIDE LSL_ASSIGNMENT_PLAIN. | 73 | %right LSL_ASSIGNMENT_CONCATENATE LSL_ASSIGNMENT_ADD LSL_ASSIGNMENT_SUBTRACT LSL_ASSIGNMENT_MULTIPLY LSL_ASSIGNMENT_MODULO LSL_ASSIGNMENT_DIVIDE LSL_ASSIGNMENT_PLAIN. |
74 | expr ::= LSL_IDENTIFIER LSL_ASSIGNMENT_CONCATENATE expr. | 74 | expr ::= LSL_IDENTIFIER LSL_ASSIGNMENT_CONCATENATE expr. |
@@ -151,7 +151,7 @@ state ::= LSL_IDENTIFIER stateBlock. | |||
151 | %nonassoc LSL_SCRIPT. | 151 | %nonassoc LSL_SCRIPT. |
152 | script ::= script state. | 152 | script ::= script state. |
153 | script ::= script function. | 153 | script ::= script function. |
154 | script ::= script statement(A). { A->left = param->ast; param->ast = A; } | 154 | script ::= script statement(A). { if (NULL != A) A->left = param->ast; param->ast = A; } |
155 | script ::= . | 155 | script ::= . |
156 | 156 | ||
157 | %nonassoc LSL_SPACE LSL_COMMENT LSL_COMMENT_LINE LSL_UNKNOWN. | 157 | %nonassoc LSL_SPACE LSL_COMMENT LSL_COMMENT_LINE LSL_UNKNOWN. |