vn/code/vn_scene.md

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;; };; };; }