added while loops and fixed unary operators (including correct precrement and decrement)
This commit is contained in:
@@ -99,6 +99,9 @@ obj c_generator (Object) {
|
||||
if_str += string(" else {\n") + generate(node->if_statement.else_part) + "}"
|
||||
return if_str + "\n"
|
||||
}
|
||||
fun generate_while_loop(node: *ast_node): string {
|
||||
return string("while (") + generate(node->while_loop.condition) + ") {\n" + generate(node->while_loop.statement) + "}\n"
|
||||
}
|
||||
fun generate_identifier(node: *ast_node): string {
|
||||
return node->identifier.name
|
||||
}
|
||||
@@ -121,6 +124,9 @@ obj c_generator (Object) {
|
||||
var parameters = node->function_call.parameters
|
||||
if (func_name == "+" || func_name == "-" || func_name == "*" || func_name == "/" || func_name == "||" || func_name == "&&")
|
||||
return string("(") + generate(parameters[0]) + func_name + generate(parameters[1]) + string(")")
|
||||
// the post ones need to be post-ed specifically, and take the p off
|
||||
if (func_name == "++p" || func_name == "--p")
|
||||
return string("(") + generate(parameters[0]) + ")" + func_name.slice(0,-2)
|
||||
var call_string = string()
|
||||
parameters.for_each(fun(param: *ast_node) {
|
||||
if (call_string != "")
|
||||
@@ -140,6 +146,7 @@ obj c_generator (Object) {
|
||||
ast_node::declaration_statement(backing) return generate_declaration_statement(node)
|
||||
ast_node::assignment_statement(backing) return generate_assignment_statement(node)
|
||||
ast_node::if_statement(backing) return generate_if_statement(node)
|
||||
ast_node::while_loop(backing) return generate_while_loop(node)
|
||||
ast_node::function(backing) return generate_function(node)
|
||||
ast_node::function_call(backing) return generate_function_call(node)
|
||||
ast_node::code_block(backing) return generate_code_block(node)
|
||||
|
||||
Reference in New Issue
Block a user