Added short/long and unsigned types for all int based types

This commit is contained in:
Nathan Braswell
2016-04-29 16:19:23 -04:00
parent ecbbcb4eda
commit d126cbf24b
7 changed files with 73 additions and 69 deletions

View File

@@ -396,14 +396,26 @@ obj ast_transformation (Object) {
return type_ptr(base_type::void_return(), indirection, is_ref)
else if (type_syntax_str == "bool")
return type_ptr(base_type::boolean(), indirection, is_ref)
else if (type_syntax_str == "char")
return type_ptr(base_type::character(), indirection, is_ref)
else if (type_syntax_str == "uchar")
return type_ptr(base_type::ucharacter(), indirection, is_ref)
else if (type_syntax_str == "short")
return type_ptr(base_type::short_int(), indirection, is_ref)
else if (type_syntax_str == "ushort")
return type_ptr(base_type::ushort_int(), indirection, is_ref)
else if (type_syntax_str == "int")
return type_ptr(base_type::integer(), indirection, is_ref)
else if (type_syntax_str == "uint")
return type_ptr(base_type::uinteger(), indirection, is_ref)
else if (type_syntax_str == "long")
return type_ptr(base_type::long_int(), indirection, is_ref)
else if (type_syntax_str == "ulong")
return type_ptr(base_type::ulong_int(), indirection, is_ref)
else if (type_syntax_str == "float")
return type_ptr(base_type::floating(), indirection, is_ref)
else if (type_syntax_str == "double")
return type_ptr(base_type::double_precision(), indirection, is_ref)
else if (type_syntax_str == "char")
return type_ptr(base_type::character(), indirection, is_ref)
else if (get_node("function_type", real_node)) {
var types = get_nodes("type", get_node("function_type", real_node)).map(fun(node: *tree<symbol>): *type transform_type(node, scope, template_replacements);)
return type_ptr(types.slice(0,-2), types.last(), indirection, is_ref)
@@ -766,6 +778,7 @@ obj ast_transformation (Object) {
parameters = get_nodes("intrinsic_parameter", node).map(fun(child: *tree<symbol>): string return concat_symbol_tree(child);)
if (get_nodes("type", node).size)
type_parameters = get_nodes("type", node).map(fun(child: *tree<symbol>): *type return transform_type(child, scope, template_replacements);)
/*return ast_compiler_intrinsic_ptr(concat_symbol_tree(get_node("identifier", node)), parameters, type_parameters, type_ptr(base_type::ulong_int()))*/
return ast_compiler_intrinsic_ptr(concat_symbol_tree(get_node("identifier", node)), parameters, type_parameters, type_ptr(base_type::integer()))
}
fun transform_lambda(node: *tree<symbol>, scope: *ast_node, template_replacements: map<string, *type>): *ast_node {