821 B
821 B
@table(Name, NameLower, Contents) scene_ast_node_types:
{
{ Invalid invalid } { BlockStatement block_statement `scene_ast_node *First; scene_ast_node *Last;` } { SceneDecl scene_declaration
}
}
@table_gen_enum scene_ast_node_type:
{
@expand(scene_ast_node_types s) S_AstNode_$(s.Name),
;
S_AstNode_Count,
:
}
@table_gen
{
struct scene_ast_node;
}
@table_gen
{
@expand(scene_ast_node_types s) struct scene_ast_node_$(s.NameLower) {$(s.Contents)};
}
@table_gen
{
struct scene_ast_node
;
{
;
scene_ast_node_type Type;
;
union
;
{
;
@expand(scene_ast_node_types s) scene_ast_node_$(s.NameLower) $(s.Name)Data;
;
};
;
};
;
}