Visitor for evaluating AST. More...
#include <eval.hpp>
Public Member Functions | |
EvalVisitor (EvalContext &ctx) | |
Construct a new Eval Visitor object. | |
error::Result< double > | visit_bin_op (NodePtr< BinaryOpNode > &node) override |
Visit a binary operation node. | |
error::Result< double > | visit_unary_op (NodePtr< UnaryOpNode > &node) override |
Visit a unary operation node. | |
error::Result< double > | visit_number (NodePtr< NumberNode > &node) override |
Visit a number node. | |
error::Result< double > | visit_varref (NodePtr< VarRefNode > &node) override |
Visit a variable reference node. | |
error::Result< double > | visit_varassign (NodePtr< VarAssignNode > &node) override |
Visit a variable assignment node. | |
error::Result< double > | visit_fcall (NodePtr< FcallNode > &node) override |
Visit a function call node. | |
error::Result< double > | visit_fdef (NodePtr< FdefNode > &node) override |
Visit a function definition node. | |
error::Result< double > | visit_if (NodePtr< IfNode > &node) override |
Visit an if node. | |
error::Result< double > | visit_import (NodePtr< ProgramImportNode > &node) override |
Visit a program import node. | |
error::Result< double > | visit_program (NodePtr< ProgramNode > &node) override |
Visit a program node. | |
![]() | |
virtual error::Result< double > | visit (NodePtr<> &node) |
Visit a number node. | |
Static Public Attributes | |
static const std::unordered_map< NodeType, std::function< double(double, double)> > | BINOP_MAP |
static const std::unordered_map< NodeType, std::function< double(double)> > | UNARYOP_MAP |
Visitor for evaluating AST.
|
inline |
Construct a new Eval Visitor object.
ctx | Evaluation context. |
|
overridevirtual |
Visit a binary operation node.
node | Binary operation node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a function call node.
node | Function call node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a function definition node.
node | Function definition node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit an if node.
node | If node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a program import node.
node | Program import node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a number node.
node | Number node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a program node.
node | Program node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a unary operation node.
node | Unary operation node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a variable assignment node.
node | Variable assignment node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
overridevirtual |
Visit a variable reference node.
node | Variable reference node. |
Reimplemented from tcalc::ast::BaseVisitor< double >.
|
inlinestatic |
Map of binary operator to function.
|
inlinestatic |
Map of unary operator to function.