MysoreScript
Public Member Functions | List of all members
AST::BinOp< Op > Struct Template Reference

Template superclass for binary operators. More...

#include <ast.hh>

Inheritance diagram for AST::BinOp< Op >:
Inheritance graph
[legend]
Collaboration diagram for AST::BinOp< Op >:
Collaboration graph
[legend]

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< Expressionlhs
 The left-hand side of the operation. More...
 
ASTPtr< Expressionrhs
 The right-hand side of the operation. More...
 
- Protected Attributes inherited from AST::Expression
Interpreter::Value cache
 Cached result for constant expression. More...
 

Detailed Description

template<class Op>
struct AST::BinOp< Op >

Template superclass for binary operators.

The template argument provides the implementation of the function that handles the small-integer implementation.

Definition at line 289 of file ast.hh.

Member Function Documentation

§ evaluateWithIntegers()

template<class Op>
intptr_t AST::BinOp< Op >::evaluateWithIntegers ( intptr_t  lhs,
intptr_t  rhs 
)
inlineoverridevirtual

Evaluate (interpret) this expression, having already determined that the two sides are integer values.

Implements AST::BinOpBase.

Definition at line 295 of file ast.hh.


The documentation for this struct was generated from the following file: