-private:
- virtual void visit(Block &);
- virtual void visit(VariableReference &);
- virtual void visit(MemberAccess &);
- virtual void visit(BinaryExpression &);
- virtual void visit(Assignment &);
- virtual void visit(StructDeclaration &);
- virtual void visit(VariableDeclaration &);
- virtual void visit(InterfaceBlock &);
- using TraversingVisitor::visit;
-};
-
-class FunctionResolver: private TraversingVisitor
-{
-private:
- std::map<std::string, std::vector<FunctionDeclaration *> > functions;
-
-public:
- void apply(Stage &s) { visit(s.content); }
-
-private:
- virtual void visit(FunctionCall &);
- virtual void visit(FunctionDeclaration &);
- using TraversingVisitor::visit;
-};
-
-class InterfaceGenerator: private BlockModifier
+Unresolved variables are looked up in the previous stage's out variables. */
+class InterfaceGenerator: private TraversingVisitor