|
Aseba
1.5.5
|
Virtual class for abstraction nodes abort() if you try to typeCheck(), optimize() or emit() to force correct expansion into regular Aseba nodes. More...
#include <tree.h>
Public Member Functions | |
| AbstractTreeNode (const SourcePos &sourcePos) | |
| Constructor. | |
| virtual Node * | expandAbstractNodes (std::wostream *dump)=0 |
| Second pass to expand "abstract" nodes into more concrete ones. More... | |
| virtual ReturnType | typeCheck (Compiler *compiler) |
| Typecheck this node, throw an exception if there is any type violation. | |
| virtual Node * | optimize (std::wostream *dump) |
| Optimize this node, return the optimized node. | |
| virtual unsigned | getStackDepth () const |
| Return the stack depth requirement for this node and its children. | |
| virtual void | emit (PreLinkBytecode &bytecodes) const |
| Generate bytecode. | |
Public Member Functions inherited from Aseba::Node | |
| Node (const SourcePos &sourcePos) | |
| Constructor. | |
| virtual | ~Node () |
| Destructor, delete all children. | |
| virtual Node * | shallowCopy ()=0 |
| Return a shallow copy of the object (children point to the same objects) | |
| virtual Node * | deepCopy () |
| Return a deep copy of the object (children are also copied) | |
| virtual void | checkVectorSize () const |
| Check the consistency in vectors' size. | |
| virtual Node * | expandVectorialNodes (std::wostream *dump, Compiler *compiler=0, unsigned int index=0) |
| Third pass to expand vectorial operations into mutliple scalar ones. More... | |
| virtual std::wstring | toWString () const =0 |
| Return a string representation of this node. | |
| virtual std::wstring | toNodeName () const =0 |
| Return a string representation of the name of this node. | |
| virtual void | dump (std::wostream &dest, unsigned &indent) const |
| Dump this node and the rest of the tree. | |
| std::wstring | typeName (const Node::ReturnType &type) const |
| Return the name of a type. | |
| void | expectType (const Node::ReturnType &expected, const Node::ReturnType &type) const |
| Check for a specific type, throw an exception otherwise. | |
| virtual unsigned | getVectorAddr () const |
| return the address of the left-most operand, or E_NOVAL if none | |
| virtual unsigned | getVectorSize () const |
| return the children's size, check for equal size, or E_NOVAL if no child | |
Additional Inherited Members | |
Public Types inherited from Aseba::Node | |
| enum | ReturnType { TYPE_UNIT = 0, TYPE_BOOL, TYPE_INT } |
| A type a node can return. | |
| enum | MemoryErrorCode { E_NOVAL = UINT_MAX } |
| typedef std::vector< Node * > | NodesVector |
| Vector for children of a node. | |
Public Attributes inherited from Aseba::Node | |
| NodesVector | children |
| children of this node | |
| SourcePos | sourcePos |
| position is source | |
Virtual class for abstraction nodes abort() if you try to typeCheck(), optimize() or emit() to force correct expansion into regular Aseba nodes.
|
pure virtual |
Second pass to expand "abstract" nodes into more concrete ones.
Generically traverse the tree, expand the children, and perform garbagge collection.
Reimplemented from Aseba::Node.
Implemented in Aseba::UnaryArithmeticAssignmentNode, Aseba::ArithmeticAssignmentNode, Aseba::MemoryVectorNode, and Aseba::TupleVectorNode.
1.8.11