#include <tree.h>
Public Member Functions | |
BinaryArithmeticNode (const SourcePos &sourcePos) | |
BinaryArithmeticNode (const SourcePos &sourcePos, AsebaBinaryOperator op, Node *left, Node *right) | |
Constructor. | |
void | deMorganNotRemoval () |
Recursively apply de Morgan law as long as nodes are logic operations, and then invert comparisons. | |
virtual void | emit (PreLinkBytecode &bytecodes) const |
Generate bytecode. | |
virtual Node * | expandToAsebaTree (std::wostream *dump, unsigned int index=0) |
expand to left[index] (op) right[index] | |
virtual unsigned | getStackDepth () const |
Return the stack depth requirement for this node and its children. | |
virtual Node * | optimize (std::wostream *dump) |
Optimize this node, return the optimized node. | |
virtual BinaryArithmeticNode * | shallowCopy () |
Return a shallow copy of the object (children point to the same objects) | |
virtual std::wstring | toNodeName () const |
Return a string representation of the name of this node. | |
virtual std::wstring | toWString () const |
Return a string representation of this node. | |
virtual ReturnType | typeCheck () const |
Typecheck this node, throw an exception if there is any type violation. | |
Static Public Member Functions | |
static BinaryArithmeticNode * | fromAddExpression (const SourcePos &sourcePos, Compiler::Token::Type op, Node *left, Node *right) |
Create a binary arithmetic node for add/sub operation op. | |
static BinaryArithmeticNode * | fromBinaryExpression (const SourcePos &sourcePos, Compiler::Token::Type op, Node *left, Node *right) |
Create a binary arithmetic node for or/xor/and operation op. | |
static BinaryArithmeticNode * | fromComparison (const SourcePos &sourcePos, Compiler::Token::Type op, Node *left, Node *right) |
Create a binary arithmetic node for comparaison operation op. | |
static BinaryArithmeticNode * | fromMultExpression (const SourcePos &sourcePos, Compiler::Token::Type op, Node *left, Node *right) |
Create a binary arithmetic node for mult/div/mod operation op. | |
static BinaryArithmeticNode * | fromShiftExpression (const SourcePos &sourcePos, Compiler::Token::Type op, Node *left, Node *right) |
Create a binary arithmetic node for shift operation op. | |
Public Attributes | |
AsebaBinaryOperator | op |
operator |
Node for binary arithmetic. children[0] is left expression children[1] is right expression
Aseba::BinaryArithmeticNode::BinaryArithmeticNode | ( | const SourcePos & | sourcePos | ) | [inline] |
Node * Aseba::BinaryArithmeticNode::expandToAsebaTree | ( | std::wostream * | dump, |
unsigned int | index = 0 |
||
) | [virtual] |
expand to left[index] (op) right[index]
Reimplemented from Aseba::Node.
Definition at line 69 of file tree-expand.cpp.
virtual BinaryArithmeticNode* Aseba::BinaryArithmeticNode::shallowCopy | ( | ) | [inline, virtual] |
Return a shallow copy of the object (children point to the same objects)
Implements Aseba::Node.
virtual std::wstring Aseba::BinaryArithmeticNode::toNodeName | ( | ) | const [inline, virtual] |
Return a string representation of the name of this node.
Implements Aseba::Node.