ast_value* left, ast_value* right)
{
ast_instantiate(ast_binary, ctx, ast_binary_delete);
- ast_expression_init((ast_expression*)self, NULL); /* FIXME */
+ ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_binary_codegen);
self->op = op;
self->left = left;
mem_d(self);
}
+ast_store* ast_store_new(lex_ctx_t ctx, int op,
+ ast_value *dest, ast_value *source)
+{
+ ast_instantiate(ast_store, ctx, ast_store_delete);
+ ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_store_codegen);
+
+ self->op = op;
+ self->dest = dest;
+ self->source = source;
+
+ return self;
+}
+
+void ast_store_delete(ast_store *self)
+{
+ mem_d(self);
+}
+
ast_block* ast_block_new(lex_ctx_t ctx)
{
ast_instantiate(ast_block, ctx, ast_block_delete);
/* AST codegen aprt
*/
-/* TODO */
+/* Some dummies so it compiles... */
+bool ast_value_codegen(ast_value *self, ast_function *func, ir_value **out)
+{
+ return false;
+}
+
+bool ast_block_codegen(ast_block *self, ast_function *func, ir_value **out)
+{
+ return false;
+}
+
+bool ast_store_codegen(ast_store *self, ast_function *func, ir_value **out)
+{
+ return false;
+}
+
+bool ast_binary_codegen(ast_binary *self, ast_function *func, ir_value **out)
+{
+ return false;
+}