ast_value* left, ast_value* right)
{
ast_instantiate(ast_binary, ctx, ast_binary_delete);
- ast_expression_init((ast_expression*)self, NULL); /* FIXME */
+ switch (op) {
+ case INSTR_STORE_F:
+ case INSTR_STORE_V:
+ case INSTR_STORE_S:
+ case INSTR_STORE_ENT:
+ case INSTR_STORE_FLD:
+ case INSTR_STORE_FNC:
+ case INSTR_STOREP_F:
+ case INSTR_STOREP_V:
+ case INSTR_STOREP_S:
+ case INSTR_STOREP_ENT:
+ case INSTR_STOREP_FLD:
+ case INSTR_STOREP_FNC:
+#if 0
+ case INSTR_STORE_I:
+ case INSTR_STORE_IF:
+ case INSTR_STORE_FI:
+ case INSTR_STOREP_I:
+ case INSTR_STOREP_IF:
+ case INSTR_STOREP_FI:
+ case INSTR_STORE_P:
+ case INSTR_STOREP_P:
+ case INSTR_STOREP_C:
+#endif
+ ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_bin_store_codegen);
+ break;
+ default:
+ ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_binary_codegen);
+ break;
+ }
self->op = op;
self->left = left;
{
return false;
}
+
+bool ast_bin_store_codegen(ast_binary *self, ast_function *func, ir_value **out)
+{
+ return false;
+}
+
+bool ast_binary_codegen(ast_binary *self, ast_function *func, ir_value **out)
+{
+ return false;
+}
ast_value *right);
void ast_binary_delete(ast_binary*);
-/* hmm, seperate functions? */
-bool ast_bin_add_codegen(ast_binary*, ir_function*, ir_value**);
-/* ... */
-
+/* hmm, seperate functions?
+bool ast_block_codegen(ast_block*, ast_function*, ir_value**);
+ */
/* maybe for this one */
-bool ast_bin_store_codegen(ast_binary*, ir_function*, ir_value**);
+bool ast_bin_store_codegen(ast_binary*, ast_function*, ir_value**);
-/* could decide what to use */
-bool ast_binary_codegen(ast_binary*, ir_function*, ir_value**);
+bool ast_binary_codegen(ast_binary*, ast_function*, ir_value**);
/* Blocks
*