aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/LuaSL/src/LuaSL_LSL_tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'LuaSL/src/LuaSL_LSL_tree.c')
-rw-r--r--LuaSL/src/LuaSL_LSL_tree.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/LuaSL/src/LuaSL_LSL_tree.c b/LuaSL/src/LuaSL_LSL_tree.c
index a69b0d3..88768e0 100644
--- a/LuaSL/src/LuaSL_LSL_tree.c
+++ b/LuaSL/src/LuaSL_LSL_tree.c
@@ -139,6 +139,13 @@ int evaluateExpression(LSL_Expression *exp, int old)
139#endif 139#endif
140 case LSL_EXPRESSION : 140 case LSL_EXPRESSION :
141 { 141 {
142#ifdef LUASL_DEBUG
143 #ifdef LUASL_USE_ENUM
144 printf(" %s ", LSL_Tokens[exp->expression - LSL_COMMA].token);
145 #else
146 printf(" # ");
147 #endif
148#endif
142 switch (exp->expression) 149 switch (exp->expression)
143 { 150 {
144#ifdef LUASL_USE_ENUM 151#ifdef LUASL_USE_ENUM
@@ -162,30 +169,25 @@ int evaluateExpression(LSL_Expression *exp, int old)
162 case LSL_ANGLE_OPEN : 169 case LSL_ANGLE_OPEN :
163 case LSL_ANGLE_CLOSE : 170 case LSL_ANGLE_CLOSE :
164 case LSL_TYPECAST : 171 case LSL_TYPECAST :
165 case LSL_BIT_NOT :
166 case LSL_BOOL_NOT :
167 case LSL_NEGATION :
168 break; 172 break;
173#endif
174 case LSL_BIT_NOT : return ~ evaluateExpression(exp->right, old);
175 case LSL_BOOL_NOT : return ! evaluateExpression(exp->right, old);
176 case LSL_NEGATION : return 0 - evaluateExpression(exp->right, old);
169 case LSL_DIVIDE : return evaluateExpression(exp->left, old) / evaluateExpression(exp->right, old); 177 case LSL_DIVIDE : return evaluateExpression(exp->left, old) / evaluateExpression(exp->right, old);
178#ifdef LUASL_USE_ENUM
170 case LSL_MODULO : return evaluateExpression(exp->left, old) % evaluateExpression(exp->right, old); 179 case LSL_MODULO : return evaluateExpression(exp->left, old) % evaluateExpression(exp->right, old);
171#endif 180#endif
172 case LSL_MULTIPLY : 181 case LSL_MULTIPLY : return evaluateExpression(exp->left, old) * evaluateExpression(exp->right, old);
173#ifdef LUASL_DEBUG
174 printf(" * ");
175#endif
176 return evaluateExpression(exp->left, old) * evaluateExpression(exp->right, old);
177#ifdef LUASL_USE_ENUM 182#ifdef LUASL_USE_ENUM
178 case LSL_DOT_PRODUCT : break; 183 case LSL_DOT_PRODUCT : break;
179 case LSL_CROSS_PRODUCT : break; 184 case LSL_CROSS_PRODUCT : break;
180 case LSL_SUBTRACT : return evaluateExpression(exp->left, old) - evaluateExpression(exp->right, old);
181#endif
182 case LSL_ADD :
183#ifdef LUASL_DEBUG
184 printf(" + ");
185#endif 185#endif
186 return evaluateExpression(exp->left, old) + evaluateExpression(exp->right, old); 186 case LSL_SUBTRACT : return evaluateExpression(exp->left, old) - evaluateExpression(exp->right, old);
187 case LSL_ADD : return evaluateExpression(exp->left, old) + evaluateExpression(exp->right, old);
187#ifdef LUASL_USE_ENUM 188#ifdef LUASL_USE_ENUM
188 case LSL_CONCATENATE : break; 189 case LSL_CONCATENATE : break;
190#endif
189 case LSL_LEFT_SHIFT : return evaluateExpression(exp->left, old) << evaluateExpression(exp->right, old); 191 case LSL_LEFT_SHIFT : return evaluateExpression(exp->left, old) << evaluateExpression(exp->right, old);
190 case LSL_RIGHT_SHIFT : return evaluateExpression(exp->left, old) >> evaluateExpression(exp->right, old); 192 case LSL_RIGHT_SHIFT : return evaluateExpression(exp->left, old) >> evaluateExpression(exp->right, old);
191 case LSL_LESS_THAN : return evaluateExpression(exp->left, old) < evaluateExpression(exp->right, old); 193 case LSL_LESS_THAN : return evaluateExpression(exp->left, old) < evaluateExpression(exp->right, old);
@@ -199,7 +201,6 @@ int evaluateExpression(LSL_Expression *exp, int old)
199 case LSL_BIT_OR : return evaluateExpression(exp->left, old) | evaluateExpression(exp->right, old); 201 case LSL_BIT_OR : return evaluateExpression(exp->left, old) | evaluateExpression(exp->right, old);
200 case LSL_BOOL_OR : return evaluateExpression(exp->left, old) || evaluateExpression(exp->right, old); 202 case LSL_BOOL_OR : return evaluateExpression(exp->left, old) || evaluateExpression(exp->right, old);
201 case LSL_BOOL_AND : return evaluateExpression(exp->left, old) && evaluateExpression(exp->right, old); 203 case LSL_BOOL_AND : return evaluateExpression(exp->left, old) && evaluateExpression(exp->right, old);
202#endif
203 } 204 }
204 break; 205 break;
205 } 206 }