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.c195
1 files changed, 99 insertions, 96 deletions
diff --git a/LuaSL/src/LuaSL_LSL_tree.c b/LuaSL/src/LuaSL_LSL_tree.c
index 9137692..552de04 100644
--- a/LuaSL/src/LuaSL_LSL_tree.c
+++ b/LuaSL/src/LuaSL_LSL_tree.c
@@ -106,88 +106,88 @@ int evaluateExpression(LSL_Expression *exp, int old)
106{ 106{
107 switch(exp->type) 107 switch(exp->type)
108 { 108 {
109 case LSL_COMMENT : 109// case LSL_COMMENT :
110 case LSL_TYPE : 110// case LSL_TYPE :
111 case LSL_NAME : 111// case LSL_NAME :
112 case LSL_IDENTIFIER : 112// case LSL_IDENTIFIER :
113 break; 113// break;
114 case LSL_FLOAT : return (int) exp->value.floatValue; 114// case LSL_FLOAT : return (int) exp->value.floatValue;
115 case LSL_INTEGER : return exp->value.integerValue; 115 case LSL_INTEGER : return exp->value.integerValue;
116 case LSL_STRING : 116// case LSL_STRING :
117 case LSL_KEY : 117// case LSL_KEY :
118 case LSL_VECTOR : 118// case LSL_VECTOR :
119 case LSL_ROTATION : 119// case LSL_ROTATION :
120 case LSL_LIST : 120// case LSL_LIST :
121 case LSL_LABEL : 121// case LSL_LABEL :
122 break; 122// break;
123 case LSL_EXPRESSION : 123 case LSL_EXPRESSION :
124 { 124 {
125 switch (exp->expression) 125 switch (exp->expression)
126 { 126 {
127 case LSL_COMMA : 127// case LSL_COMMA :
128 case LSL_INCREMENT_PRE : 128// case LSL_INCREMENT_PRE :
129 case LSL_INCREMENT_POST : 129// case LSL_INCREMENT_POST :
130 case LSL_DECREMENT_PRE : 130// case LSL_DECREMENT_PRE :
131 case LSL_DECREMENT_POST : 131// case LSL_DECREMENT_POST :
132 case LSL_DOT : 132// case LSL_DOT :
133 case LSL_ASSIGNMENT_PLAIN : 133// case LSL_ASSIGNMENT_PLAIN :
134 case LSL_ASSIGNMENT_DIVIDE : 134// case LSL_ASSIGNMENT_DIVIDE :
135 case LSL_ASSIGNMENT_MODULO : 135// case LSL_ASSIGNMENT_MODULO :
136 case LSL_ASSIGNMENT_MULTIPLY : 136// case LSL_ASSIGNMENT_MULTIPLY :
137 case LSL_ASSIGNMENT_SUBTRACT : 137// case LSL_ASSIGNMENT_SUBTRACT :
138 case LSL_ASSIGNMENT_ADD : 138// case LSL_ASSIGNMENT_ADD :
139 case LSL_ASSIGNMENT_CONCATENATE : 139// case LSL_ASSIGNMENT_CONCATENATE :
140 case LSL_PARENTHESIS_OPEN : 140 case LSL_PARENTHESIS_OPEN :
141 case LSL_PARENTHESIS_CLOSE : 141 case LSL_PARENTHESIS_CLOSE :
142 case LSL_BRACKET_OPEN : 142// case LSL_BRACKET_OPEN :
143 case LSL_BRACKET_CLOSE : 143// case LSL_BRACKET_CLOSE :
144 case LSL_ANGLE_OPEN : 144// case LSL_ANGLE_OPEN :
145 case LSL_ANGLE_CLOSE : 145// case LSL_ANGLE_CLOSE :
146 case LSL_TYPECAST : 146// case LSL_TYPECAST :
147 case LSL_BIT_NOT : 147// case LSL_BIT_NOT :
148 case LSL_BOOL_NOT : 148// case LSL_BOOL_NOT :
149 case LSL_NEGATION : 149// case LSL_NEGATION :
150 break; 150 break;
151 case LSL_DIVIDE : return evaluateExpression(exp->left, old) / evaluateExpression(exp->right, old); 151// case LSL_DIVIDE : return evaluateExpression(exp->left, old) / evaluateExpression(exp->right, old);
152 case LSL_MODULO : return evaluateExpression(exp->left, old) % evaluateExpression(exp->right, old); 152// case LSL_MODULO : return evaluateExpression(exp->left, old) % evaluateExpression(exp->right, old);
153 case LSL_MULTIPLY : return evaluateExpression(exp->left, old) * evaluateExpression(exp->right, old); 153 case LSL_MULTIPLY : return evaluateExpression(exp->left, old) * evaluateExpression(exp->right, old);
154 case LSL_DOT_PRODUCT : break; 154// case LSL_DOT_PRODUCT : break;
155 case LSL_CROSS_PRODUCT : break; 155// case LSL_CROSS_PRODUCT : break;
156 case LSL_SUBTRACT : return evaluateExpression(exp->left, old) - evaluateExpression(exp->right, old); 156// case LSL_SUBTRACT : return evaluateExpression(exp->left, old) - evaluateExpression(exp->right, old);
157 case LSL_ADD : return evaluateExpression(exp->left, old) + evaluateExpression(exp->right, old); 157 case LSL_ADD : return evaluateExpression(exp->left, old) + evaluateExpression(exp->right, old);
158 case LSL_CONCATENATE : break; 158// case LSL_CONCATENATE : break;
159 case LSL_LEFT_SHIFT : return evaluateExpression(exp->left, old) << evaluateExpression(exp->right, old); 159// case LSL_LEFT_SHIFT : return evaluateExpression(exp->left, old) << evaluateExpression(exp->right, old);
160 case LSL_RIGHT_SHIFT : return evaluateExpression(exp->left, old) >> evaluateExpression(exp->right, old); 160// case LSL_RIGHT_SHIFT : return evaluateExpression(exp->left, old) >> evaluateExpression(exp->right, old);
161 case LSL_LESS_THAN : return evaluateExpression(exp->left, old) < evaluateExpression(exp->right, old); 161// case LSL_LESS_THAN : return evaluateExpression(exp->left, old) < evaluateExpression(exp->right, old);
162 case LSL_GREATER_THAN : return evaluateExpression(exp->left, old) > evaluateExpression(exp->right, old); 162// case LSL_GREATER_THAN : return evaluateExpression(exp->left, old) > evaluateExpression(exp->right, old);
163 case LSL_LESS_EQUAL : return evaluateExpression(exp->left, old) <= evaluateExpression(exp->right, old); 163// case LSL_LESS_EQUAL : return evaluateExpression(exp->left, old) <= evaluateExpression(exp->right, old);
164 case LSL_GREATER_EQUAL : return evaluateExpression(exp->left, old) >= evaluateExpression(exp->right, old); 164// case LSL_GREATER_EQUAL : return evaluateExpression(exp->left, old) >= evaluateExpression(exp->right, old);
165 case LSL_EQUAL : return evaluateExpression(exp->left, old) == evaluateExpression(exp->right, old); 165// case LSL_EQUAL : return evaluateExpression(exp->left, old) == evaluateExpression(exp->right, old);
166 case LSL_NOT_EQUAL : return evaluateExpression(exp->left, old) != evaluateExpression(exp->right, old); 166// case LSL_NOT_EQUAL : return evaluateExpression(exp->left, old) != evaluateExpression(exp->right, old);
167 case LSL_BIT_AND : return evaluateExpression(exp->left, old) & evaluateExpression(exp->right, old); 167// case LSL_BIT_AND : return evaluateExpression(exp->left, old) & evaluateExpression(exp->right, old);
168 case LSL_BIT_XOR : return evaluateExpression(exp->left, old) ^ evaluateExpression(exp->right, old); 168// case LSL_BIT_XOR : return evaluateExpression(exp->left, old) ^ evaluateExpression(exp->right, old);
169 case LSL_BIT_OR : return evaluateExpression(exp->left, old) | evaluateExpression(exp->right, old); 169// case LSL_BIT_OR : return evaluateExpression(exp->left, old) | evaluateExpression(exp->right, old);
170 case LSL_BOOL_OR : return evaluateExpression(exp->left, old) || evaluateExpression(exp->right, old); 170// case LSL_BOOL_OR : return evaluateExpression(exp->left, old) || evaluateExpression(exp->right, old);
171 case LSL_BOOL_AND : return evaluateExpression(exp->left, old) && evaluateExpression(exp->right, old); 171// case LSL_BOOL_AND : return evaluateExpression(exp->left, old) && evaluateExpression(exp->right, old);
172 } 172 }
173 break; 173 break;
174 } 174 }
175 case LSL_DO : 175// case LSL_DO :
176 case LSL_FOR : 176// case LSL_FOR :
177 case LSL_IF : 177// case LSL_IF :
178 case LSL_ELSE : 178// case LSL_ELSE :
179 case LSL_ELSEIF : 179// case LSL_ELSEIF :
180 case LSL_JUMP : 180// case LSL_JUMP :
181 case LSL_STATE_CHANGE : 181// case LSL_STATE_CHANGE :
182 case LSL_WHILE : 182// case LSL_WHILE :
183 case LSL_RETURN : 183// case LSL_RETURN :
184 case LSL_STATEMENT : 184// case LSL_STATEMENT :
185 case LSL_BLOCK : 185// case LSL_BLOCK :
186 case LSL_PARAMETER : 186// case LSL_PARAMETER :
187 case LSL_FUNCTION : 187// case LSL_FUNCTION :
188 case LSL_STATE : 188// case LSL_STATE :
189 case LSL_SCRIPT : 189// case LSL_SCRIPT :
190 break; 190// break;
191 } 191 }
192 192
193 return old; 193 return old;
@@ -198,43 +198,45 @@ void outputExpression(LSL_Expression *exp)
198{ 198{
199 switch(exp->type) 199 switch(exp->type)
200 { 200 {
201 case LSL_COMMENT : return; 201// case LSL_COMMENT : return;
202 case LSL_TYPE : return; 202// case LSL_TYPE : return;
203 case LSL_NAME : return; 203// case LSL_NAME : return;
204 case LSL_IDENTIFIER : return; 204// case LSL_IDENTIFIER : return;
205 case LSL_FLOAT : printf("%f", exp->value.floatValue); break; 205// case LSL_FLOAT : printf("%f", exp->value.floatValue); break;
206 case LSL_INTEGER : printf("%d", exp->value.integerValue); break; 206 case LSL_INTEGER : printf("%d", exp->value.integerValue); break;
207 case LSL_STRING : return; 207// case LSL_STRING : return;
208 case LSL_KEY : return; 208// case LSL_KEY : return;
209 case LSL_VECTOR : return; 209// case LSL_VECTOR : return;
210 case LSL_ROTATION : return; 210// case LSL_ROTATION : return;
211 case LSL_LIST : return; 211// case LSL_LIST : return;
212 case LSL_LABEL : return; 212// case LSL_LABEL : return;
213 case LSL_EXPRESSION : 213 case LSL_EXPRESSION :
214 outputExpression(exp->left); 214 outputExpression(exp->left);
215 printf(" %s ", LSL_Tokens[exp->expression].token); 215// printf(" %s ", LSL_Tokens[exp->expression].token);
216printf(" # ");
216 outputExpression(exp->right); 217 outputExpression(exp->right);
217 break; 218 break;
218 case LSL_DO : return; 219// case LSL_DO : return;
219 case LSL_FOR : return; 220// case LSL_FOR : return;
220 case LSL_IF : return; 221// case LSL_IF : return;
221 case LSL_ELSE : return; 222// case LSL_ELSE : return;
222 case LSL_ELSEIF : return; 223// case LSL_ELSEIF : return;
223 case LSL_JUMP : return; 224// case LSL_JUMP : return;
224 case LSL_STATE_CHANGE : return; 225// case LSL_STATE_CHANGE : return;
225 case LSL_WHILE : return; 226// case LSL_WHILE : return;
226 case LSL_RETURN : return; 227// case LSL_RETURN : return;
227 case LSL_STATEMENT : return; 228// case LSL_STATEMENT : return;
228 case LSL_BLOCK : return; 229// case LSL_BLOCK : return;
229 case LSL_PARAMETER : return; 230// case LSL_PARAMETER : return;
230 case LSL_FUNCTION : return; 231// case LSL_FUNCTION : return;
231 case LSL_STATE : return; 232// case LSL_STATE : return;
232 case LSL_SCRIPT : return; 233// case LSL_SCRIPT : return;
233 } 234 }
234} 235}
235 236
236void convertExpression2Lua(LSL_Expression *exp) 237void convertExpression2Lua(LSL_Expression *exp)
237{ 238{
239/*
238 switch(exp->type) 240 switch(exp->type)
239 { 241 {
240 case LSL_COMMENT : return; 242 case LSL_COMMENT : return;
@@ -266,6 +268,7 @@ void convertExpression2Lua(LSL_Expression *exp)
266 case LSL_STATE : return; 268 case LSL_STATE : return;
267 case LSL_SCRIPT : return; 269 case LSL_SCRIPT : return;
268 } 270 }
271*/
269} 272}
270 273
271int yyerror(const char *msg) 274int yyerror(const char *msg)