diff options
author | David Walter Seikel | 2012-01-23 18:30:21 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-23 18:30:21 +1000 |
commit | 45214c885b16a1d14ad8c468158e41a7be4a8050 (patch) | |
tree | 0208438b1a32191eae64769dd1dc033ed9d5da56 /LuaSL/src/LuaSL_lemon_yaccer.y | |
parent | That was just for debugging. Still chasing that bug. (diff) | |
download | SledjHamr-45214c885b16a1d14ad8c468158e41a7be4a8050.zip SledjHamr-45214c885b16a1d14ad8c468158e41a7be4a8050.tar.gz SledjHamr-45214c885b16a1d14ad8c468158e41a7be4a8050.tar.bz2 SledjHamr-45214c885b16a1d14ad8c468158e41a7be4a8050.tar.xz |
Fix variable reference being replaced by it's definition.
Diffstat (limited to '')
-rw-r--r-- | LuaSL/src/LuaSL_lemon_yaccer.y | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index f67b9d1..38b9c36 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y | |||
@@ -159,70 +159,6 @@ expr(A) ::= LSL_IDENTIFIER(B) LSL_PARENTHESIS_OPEN(C) exprList(D) LSL_PARENTHESI | |||
159 | 159 | ||
160 | expr(A) ::= identifier(B). { A = B; } | 160 | expr(A) ::= identifier(B). { A = B; } |
161 | 161 | ||
162 | /* | ||
163 | --accepting rule at line 85 ("integer") | ||
164 | LSL_lemon Input LSL_TYPE_INTEGER | ||
165 | LSL_lemon Reduce [script ::=]. | ||
166 | LSL_lemon Shift 1 | ||
167 | LSL_lemon Stack: script | ||
168 | LSL_lemon Shift 177 | ||
169 | LSL_lemon Stack: script LSL_TYPE_INTEGER | ||
170 | --accepting rule at line 36 (" ") | ||
171 | --accepting rule at line 104 ("Checking") | ||
172 | LSL_lemon Input LSL_IDENTIFIER | ||
173 | LSL_lemon Reduce [type ::= LSL_TYPE_INTEGER]. | ||
174 | LSL_lemon Shift 107 | ||
175 | LSL_lemon Stack: script type | ||
176 | LSL_lemon Shift 97 | ||
177 | LSL_lemon Stack: script type LSL_IDENTIFIER | ||
178 | --accepting rule at line 36 (" ") | ||
179 | --accepting rule at line 71 ("=") | ||
180 | LSL_lemon Input LSL_ASSIGNMENT_PLAIN | ||
181 | LSL_lemon Shift 16 | ||
182 | LSL_lemon Stack: script type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN | ||
183 | --accepting rule at line 36 (" ") | ||
184 | --accepting rule at line 104 ("FALSE") | ||
185 | LSL_lemon Input LSL_IDENTIFIER | ||
186 | LSL_lemon Shift 127 | ||
187 | LSL_lemon Stack: script type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN LSL_IDENTIFIER | ||
188 | --accepting rule at line 81 (";") | ||
189 | LSL_lemon Input LSL_STATEMENT | ||
190 | LSL_lemon Reduce [identifier ::= LSL_IDENTIFIER]. | ||
191 | 22/01/2012 15:32:13 INF<15847>:LuaSL LuaSL_compile.c :305 checkVariable() Found FALSE! | ||
192 | LSL_lemon Shift 94 | ||
193 | LSL_lemon Stack: script type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN identifier | ||
194 | LSL_lemon Reduce [expr ::= identifier]. | ||
195 | LSL_lemon Shift 67 | ||
196 | LSL_lemon Stack: script type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN expr | ||
197 | LSL_lemon Shift 142 | ||
198 | LSL_lemon Stack: script type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN expr LSL_STATEMENT | ||
199 | --accepting rule at line 36 (" ") | ||
200 | --accepting rule at line 39 ("// whether doing consistency check") | ||
201 | --accepting rule at line 36 (" | ||
202 | |||
203 | ") | ||
204 | --accepting rule at line 85 ("integer") | ||
205 | LSL_lemon Input LSL_TYPE_INTEGER | ||
206 | LSL_lemon Reduce [statement ::= type LSL_IDENTIFIER LSL_ASSIGNMENT_PLAIN expr LSL_STATEMENT]. | ||
207 | LSL_lemon Shift 194 | ||
208 | LSL_lemon Stack: script statement | ||
209 | LSL_lemon Reduce [script ::= script statement]. | ||
210 | LSL_lemon Shift 1 | ||
211 | LSL_lemon Stack: script | ||
212 | |||
213 | |||
214 | Results in - | ||
215 | integer Checking = | ||
216 | integer FALSE = 0; // whether doing consistency check | ||
217 | |||
218 | Instead of - | ||
219 | integer Checking = FALSE; // whether doing consistency check | ||
220 | |||
221 | Coz it replaces the variable with the definition of the variable. | ||
222 | |||
223 | */ | ||
224 | |||
225 | |||
226 | %right LSL_ASSIGNMENT_CONCATENATE LSL_ASSIGNMENT_ADD LSL_ASSIGNMENT_SUBTRACT LSL_ASSIGNMENT_MULTIPLY LSL_ASSIGNMENT_MODULO LSL_ASSIGNMENT_DIVIDE LSL_ASSIGNMENT_PLAIN. | 162 | %right LSL_ASSIGNMENT_CONCATENATE LSL_ASSIGNMENT_ADD LSL_ASSIGNMENT_SUBTRACT LSL_ASSIGNMENT_MULTIPLY LSL_ASSIGNMENT_MODULO LSL_ASSIGNMENT_DIVIDE LSL_ASSIGNMENT_PLAIN. |
227 | // Yes, these can be expressions, and can happen in if statements and such. | 163 | // Yes, these can be expressions, and can happen in if statements and such. |
228 | expr(A) ::= identifier LSL_ASSIGNMENT_CONCATENATE expr(B). { A = B; } | 164 | expr(A) ::= identifier LSL_ASSIGNMENT_CONCATENATE expr(B). { A = B; } |
@@ -240,7 +176,7 @@ statement(A) ::= type(B) LSL_IDENTIFIER(C) LSL_STATEMENT(F). { A = addStatem | |||
240 | 176 | ||
241 | %right LSL_DOT LSL_IDENTIFIER LSL_FUNCTION_CALL. | 177 | %right LSL_DOT LSL_IDENTIFIER LSL_FUNCTION_CALL. |
242 | identifier ::= identifier LSL_DOT LSL_IDENTIFIER. | 178 | identifier ::= identifier LSL_DOT LSL_IDENTIFIER. |
243 | identifier(A) ::= LSL_IDENTIFIER(B). { A = checkVariable(compiler, B); } | 179 | identifier(A) ::= LSL_IDENTIFIER(B). { A = checkVariable(compiler, B); } |
244 | 180 | ||
245 | %right LSL_DECREMENT_PRE LSL_INCREMENT_PRE LSL_DECREMENT_POST LSL_INCREMENT_POST. | 181 | %right LSL_DECREMENT_PRE LSL_INCREMENT_PRE LSL_DECREMENT_POST LSL_INCREMENT_POST. |
246 | expr(A) ::= identifier(B) LSL_DECREMENT_PRE(C). { A = addCrement(compiler, B, C); } | 182 | expr(A) ::= identifier(B) LSL_DECREMENT_PRE(C). { A = addCrement(compiler, B, C); } |