bool array;
NodePtr<Expression> array_size;
NodePtr<Expression> init_expression;
+ VariableDeclaration *linked_declaration;
VariableDeclaration();
virtual void visit(NodeVisitor &);
};
+struct Passthrough: Node
+{
+ NodePtr<Expression> subscript;
+
+ virtual Passthrough *clone() const { return new Passthrough(*this); }
+ virtual void visit(NodeVisitor &);
+};
+
struct Return: Node
{
NodePtr<Expression> expression;
virtual void visit(FunctionDeclaration &) { }
virtual void visit(Conditional &) { }
virtual void visit(Iteration &) { }
+ virtual void visit(Passthrough &) { }
virtual void visit(Return &) { }
};
virtual void visit(FunctionDeclaration &);
virtual void visit(Conditional &);
virtual void visit(Iteration &);
+ virtual void visit(Passthrough &);
virtual void visit(Return &);
};
{
ContextType type;
bool present;
+ Context *previous;
ProgramSyntax::Block content;
+ std::map<std::string, VariableDeclaration *> in_variables;
+ std::map<std::string, VariableDeclaration *> out_variables;
Context(ContextType);
};