X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramcompiler.h;h=6b1e1cdafe79f9be2ad0df6858cd89b95942e859;hp=daf2a5db7904988f9e782e300b25e88ebcc47835;hb=6dc2da27f0831d4172fcfeba4900616fd6c844b8;hpb=a5772e203cc30ce3b449614d03a293fd5b5985ad diff --git a/source/programcompiler.h b/source/programcompiler.h index daf2a5db..6b1e1cda 100644 --- a/source/programcompiler.h +++ b/source/programcompiler.h @@ -26,6 +26,19 @@ private: void get_result() const { } }; + struct BlockModifier: Visitor + { + bool remove_node; + std::list > insert_nodes; + + BlockModifier(); + + void flatten_block(ProgramSyntax::Block &); + void apply_and_increment(ProgramSyntax::Block &, std::list >::iterator &); + using Visitor::visit; + virtual void visit(ProgramSyntax::Block &); + }; + struct Formatter: Visitor { typedef std::string ResultType; @@ -77,12 +90,11 @@ private: virtual void visit(T &n) { nodes.push_back(&n); } }; - struct DeclarationCombiner: Visitor + struct DeclarationCombiner: BlockModifier { bool toplevel; std::map > functions; std::map variables; - bool remove_node; DeclarationCombiner(); @@ -125,19 +137,6 @@ private: virtual void visit(ProgramSyntax::FunctionDeclaration &); }; - struct BlockModifier: Visitor - { - bool remove_node; - std::list > insert_nodes; - - BlockModifier(); - - void flatten_block(ProgramSyntax::Block &); - void apply_and_increment(ProgramSyntax::Block &, std::list >::iterator &); - using Visitor::visit; - virtual void visit(ProgramSyntax::Block &); - }; - struct InterfaceGenerator: BlockModifier { std::string in_prefix;