Base class for nodes of abstract syntax trees of module ALib Expressions. Note that AST objects (and their data) are allocated in a MonoAllocator and hence have empty destructors.
Definition at line 15 of file ast_impl.inl.
Public Field Index: | |
integer | Position |
Position in the original expression string. | |
![]() | |
Types | NodeType |
Type of derived this AST node. | |
Public Method Index: | |
AST ()=delete | |
Deleted default constructor. | |
AST (Types type, integer position) | |
virtual | ~AST () |
Virtual destructor. | |
virtual void | Assemble (Program &program, MonoAllocator &allocator, AString &normalized)=0 |
virtual AST * | Optimize (Normalization normalization)=0 |
![]() | |
ASTBase (Types type) | |
Additional Inherited Members | |
![]() | |
enum class | Types { Literal , Identifier , Function , UnaryOp , BinaryOp , TernaryOp } |
The type of node. More... | |
integer alib::expressions::detail::AST::Position |
Position in the original expression string.
Definition at line 18 of file ast_impl.inl.
Constructor
type | The node type. |
position | The index of this AST in the expression string. |
Definition at line 26 of file ast_impl.inl.
|
inlinevirtual |
Virtual destructor.
Definition at line 32 of file ast_impl.inl.
|
pure virtual |
Recursively compiles nested nodes and invokes one of the add-methods of program for itself.
program | The program to be compiled. | |
allocator | An allocator usable for temporary objects. Its memory is invalid after the compilation process. | |
[out] | normalized | The normalized string, built during recursive compilation of the AST. |
Implemented in alib::expressions::detail::ASTBinaryOp, alib::expressions::detail::ASTConditional, alib::expressions::detail::ASTFunction, alib::expressions::detail::ASTIdentifier, alib::expressions::detail::ASTLiteral, and alib::expressions::detail::ASTUnaryOp.
|
pure virtual |
Recursively walks through the tree and performs optimizations, dependent on given flags.
As of today, the only optimization performed in this AST itself is to combine nested unary '+' and '-' operators on literals.
normalization | The compiler flags denoting the normalization settings. |
Implemented in alib::expressions::detail::ASTBinaryOp, alib::expressions::detail::ASTConditional, alib::expressions::detail::ASTFunction, alib::expressions::detail::ASTIdentifier, alib::expressions::detail::ASTLiteral, and alib::expressions::detail::ASTUnaryOp.