Add array parsing. Missing rest of pipeline.
This commit is contained in:
20
AST.jai
20
AST.jai
@@ -54,6 +54,8 @@ AST_Node :: struct {
|
||||
|
||||
token : Token;
|
||||
|
||||
array_field : bool;
|
||||
|
||||
source_location : Source_Range;
|
||||
|
||||
type_variable : Type_Variable_Handle;
|
||||
@@ -105,7 +107,15 @@ pretty_print_field :: (node : *AST_Node, indentation : int, builder : *String_Bu
|
||||
print_to_builder(builder, tprint("(:= %", node.name));
|
||||
|
||||
if node.kind != .Unnamed_Field && node.token.ident_value.count > 0 {
|
||||
print_to_builder(builder, tprint(" %", node.token.ident_value));
|
||||
if node.array_field {
|
||||
append(builder, " [");
|
||||
pretty_print_node(node.children[0], 0, builder);
|
||||
append(builder, "].");
|
||||
print_to_builder(builder, "%", node.token.ident_value);
|
||||
} else {
|
||||
print_to_builder(builder, " %", node.token.ident_value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for hint : node.hint_tokens {
|
||||
@@ -114,7 +124,7 @@ pretty_print_field :: (node : *AST_Node, indentation : int, builder : *String_Bu
|
||||
}
|
||||
}
|
||||
|
||||
if node.children.count > 0 {
|
||||
if !node.array_field && node.children.count > 0 {
|
||||
append(builder, " ");
|
||||
pretty_print_children(node, indentation, builder);
|
||||
}
|
||||
@@ -271,10 +281,16 @@ pretty_print_node :: (node : *AST_Node, indentation : int, builder : *String_Bui
|
||||
pretty_print_variable :: (node : *AST_Node, indentation : int, builder : *String_Builder) {
|
||||
indent(builder, indentation);
|
||||
print_to_builder(builder, "%", node.name);
|
||||
|
||||
for child : node.children {
|
||||
print("%\n", child.kind);
|
||||
if child.kind == .Variable {
|
||||
append(builder, ".");
|
||||
pretty_print_variable(child, indentation, builder);
|
||||
} else if child.kind == .Unary {
|
||||
append(builder, "[");
|
||||
pretty_print_node(child.children[0], 0, builder);
|
||||
append(builder, "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user