static void write_expression(const expression_t *expression) { /* TODO */ switch(expression->kind) { case EXPR_LITERAL_INTEGER: write_integer(&expression->literal); break; case EXPR_ENUM_CONSTANT: { /* UHOH... hacking */ entity_t *entity = expression->reference.entity; write_enum_name(entity->enum_value.enume); fprintf(out, ".%s.val", entity->base.symbol->string); break; } case EXPR_UNARY_CASES: write_unary_expression(&expression->unary); break; case EXPR_BINARY_CASES: write_binary_expression(&expression->binary); break; default: panic("not implemented expression"); } }
static void write_expression(const expression_t *expression) { switch(expression->kind) { case EXPR_LITERAL_INTEGER: fprintf(out, "%s", expression->literal.value.begin); break; EXPR_UNARY_CASES write_unary_expression((const unary_expression_t*) expression); break; default: panic("not implemented expression"); } }