MysoreScript
|
Template superclass for binary operators. More...
#include <ast.hh>
Public Member Functions | |
intptr_t | evaluateWithIntegers (intptr_t lhs, intptr_t rhs) override |
Evaluate (interpret) this expression, having already determined that the two sides are integer values. More... | |
Public Member Functions inherited from AST::BinOpBase | |
virtual bool | isComparison () |
Returns whether this operation is a comparison. More... | |
bool | isConstantExpression () override |
A binary operation is a constant expression if both of its operands are binary expressions. More... | |
Obj | evaluateExpr (Interpreter::Context &c) override |
Evaluates the expression, either invoking a subclass evaluateWithIntegers method or by calling the relevant method on the left-hand side. More... | |
virtual llvm::Value * | compileBinOp (Compiler::Context &c, llvm::Value *LHS, llvm::Value *RHS)=0 |
Compile this binary operation with the two sides already already compiled. More... | |
llvm::Value * | compileExpression (Compiler::Context &c) override |
Compile the expression by compiling the two sides and then calling compileBinOp (implemented in subclasses) to compile the operation. More... | |
virtual const char * | methodName ()=0 |
Return the method name that this operator expands to if the operands are not small integers. More... | |
void | collectVarUses (std::unordered_set< std::string > &decls, std::unordered_set< std::string > &uses) override |
Collect the uses and declarations in this expression. More... | |
Public Member Functions inherited from AST::Expression | |
Obj | evaluate (Interpreter::Context &c) |
Evaluate the expression, caching the result if it's a constant expression. More... | |
void | interpret (Interpreter::Context &c) override final |
Interpret this expression as if it were a statement. More... | |
void | compile (Compiler::Context &c) override final |
Compile this expression as if it were a statement. More... | |
Additional Inherited Members | |
Public Attributes inherited from AST::BinOpBase | |
ASTPtr< Expression > | lhs |
The left-hand side of the operation. More... | |
ASTPtr< Expression > | rhs |
The right-hand side of the operation. More... | |
Protected Attributes inherited from AST::Expression | |
Interpreter::Value | cache |
Cached result for constant expression. More... | |
Template superclass for binary operators.
The template argument provides the implementation of the function that handles the small-integer implementation.
|
inlineoverridevirtual |
Evaluate (interpret) this expression, having already determined that the two sides are integer values.
Implements AST::BinOpBase.