Add in normal method style
This commit is contained in:
24
k.krak
24
k.krak
@@ -1166,15 +1166,29 @@ fun syntax_to_ast(file_name: str, syntax: *tree<symbol>, import_paths: ref vec<s
|
|||||||
var children = vec(_identifier(concat(get_node("identifier", syntax)), t))
|
var children = vec(_identifier(concat(get_node("identifier", syntax)), t))
|
||||||
children += get_nodes("boolean_expression", syntax).map(fun(x: *tree<symbol>): *tree<ast> return syntax_to_ast_helper(x, declared_template_types);)
|
children += get_nodes("boolean_expression", syntax).map(fun(x: *tree<symbol>): *tree<ast> return syntax_to_ast_helper(x, declared_template_types);)
|
||||||
return _declaration(children)
|
return _declaration(children)
|
||||||
} else if (syntax->data.name == "assignment_statement")
|
} else if (syntax->data.name == "assignment_statement") {
|
||||||
return _call(vec(make_ast_binding("op" + concat(syntax->children[1])),
|
return _call(vec(make_ast_binding("op" + concat(syntax->children[1])),
|
||||||
syntax_to_ast_helper(syntax->children[0], declared_template_types),
|
syntax_to_ast_helper(syntax->children[0], declared_template_types),
|
||||||
syntax_to_ast_helper(syntax->children[2], declared_template_types)))
|
syntax_to_ast_helper(syntax->children[2], declared_template_types)))
|
||||||
else if (syntax->data.name == "function_call")
|
} else if (syntax->data.name == "function_call") {
|
||||||
|
// if method, pull out
|
||||||
|
if syntax->children[0]->data.name == "unarad" && syntax->children[0]->children[0]->data.name == "access_operation" {
|
||||||
|
println("doing a method call!")
|
||||||
|
return _call(vec(syntax_to_ast_helper(syntax->children[0]->children[0]->children[2], declared_template_types)) + syntax_to_ast_helper(syntax->children[0]->children[0]->children[0], declared_template_types) + get_nodes("parameter", syntax).map(fun(s: *tree<symbol>): *tree<ast> {
|
||||||
|
return syntax_to_ast_helper(s->children[0], declared_template_types)
|
||||||
|
}))
|
||||||
|
} else {
|
||||||
|
println("NOT doing a method call! - is " + syntax->children[0]->data.name + " not unrad, or")
|
||||||
|
println(syntax->children[0]->children[0]->data.name + " not access_operation")
|
||||||
return _call(vec(syntax_to_ast_helper(syntax->children[0], declared_template_types)) + get_nodes("parameter", syntax).map(fun(s: *tree<symbol>): *tree<ast> {
|
return _call(vec(syntax_to_ast_helper(syntax->children[0], declared_template_types)) + get_nodes("parameter", syntax).map(fun(s: *tree<symbol>): *tree<ast> {
|
||||||
return syntax_to_ast_helper(s->children[0], declared_template_types)
|
return syntax_to_ast_helper(s->children[0], declared_template_types)
|
||||||
}))
|
}))
|
||||||
else if (syntax->data.name == "boolean_expression" ||
|
}
|
||||||
|
} else if (syntax->data.name == "access_operation") {
|
||||||
|
// somehow note / do the crazier scope lookup
|
||||||
|
// also handle . vs ->
|
||||||
|
return _call(vec(make_ast_binding(concat(syntax->children[2])), syntax_to_ast_helper(syntax->children[0], declared_template_types)))
|
||||||
|
} else if (syntax->data.name == "boolean_expression" ||
|
||||||
syntax->data.name == "and_boolean_expression" ||
|
syntax->data.name == "and_boolean_expression" ||
|
||||||
syntax->data.name == "bitwise_or" ||
|
syntax->data.name == "bitwise_or" ||
|
||||||
syntax->data.name == "bitwise_xor" ||
|
syntax->data.name == "bitwise_xor" ||
|
||||||
@@ -1207,10 +1221,6 @@ fun syntax_to_ast(file_name: str, syntax: *tree<symbol>, import_paths: ref vec<s
|
|||||||
syntax_to_ast_helper(syntax->children[0], declared_template_types),
|
syntax_to_ast_helper(syntax->children[0], declared_template_types),
|
||||||
syntax_to_ast_helper(syntax->children[2], declared_template_types)))
|
syntax_to_ast_helper(syntax->children[2], declared_template_types)))
|
||||||
}
|
}
|
||||||
} else if (syntax->data.name == "access_operation") {
|
|
||||||
// somehow note / do the crazier scope lookup
|
|
||||||
// also handle . vs ->
|
|
||||||
return _call(vec(make_ast_binding(concat(syntax->children[2])), syntax_to_ast_helper(syntax->children[0], declared_template_types)))
|
|
||||||
} else if (syntax->data.name == "cast_expression") {
|
} else if (syntax->data.name == "cast_expression") {
|
||||||
return _cast(parse_type(get_node("type", syntax), declared_template_types), vec(syntax_to_ast_helper(syntax->children[0], declared_template_types)))
|
return _cast(parse_type(get_node("type", syntax), declared_template_types), vec(syntax_to_ast_helper(syntax->children[0], declared_template_types)))
|
||||||
} else if (syntax->data.name == "number") {
|
} else if (syntax->data.name == "number") {
|
||||||
|
|||||||
Reference in New Issue
Block a user