ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
No Matches
AST Struct Referenceabstract


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 30 of file ast.hpp.

#include <ast.hpp>

Inheritance diagram for AST:

Public Type Index:

enum class  Types {
  Literal , Identifier , Function , UnaryOp ,
  BinaryOp , TernaryOp

Public Field Index:

Types NodeType
integer Position

Public Method Index:

 AST ()=delete
 AST (Types type, integer position)
virtual ~AST ()
virtual void Assemble (Program &program, MonoAllocator &allocator, AString &normalized)=0
virtual ASTOptimize (Normalization normalization)=0

Enumeration Details:

◆ Types

enum class Types

The type of node.

Definition at line 33 of file ast.hpp.

Field Details:

◆ NodeType

Types NodeType

Type of derived this AST node

Definition at line 44 of file ast.hpp.

◆ Position

integer Position

Position in original expression string.

Definition at line 47 of file ast.hpp.

Constructor(s) / Destructor Details::

◆ AST() [1/2]

AST ( )

Deleted default constructor.

◆ AST() [2/2]

AST ( Types type,
integer position )


typeThe node type.
positionThe index of this AST in the expression string.

Definition at line 57 of file ast.hpp.

◆ ~AST()

virtual ~AST ( )

Virtual destructor.

Definition at line 63 of file ast.hpp.

Method Details:

◆ Assemble()

virtual void Assemble ( Program & program,
MonoAllocator & allocator,
AString & normalized )
pure virtual

Recursively compiles nested nodes and invokes one of the add-methods of program for itself.

programThe program to be compiled.
allocatorAn allocator usable for temporary objects. Its memory is invalid after the compilation process.
[out]normalizedThe normalized string, built during recursive compilation of the AST.

Implemented in ASTLiteral, ASTIdentifier, ASTFunction, ASTUnaryOp, ASTBinaryOp, and ASTConditional.

◆ Optimize()

virtual AST * Optimize ( Normalization normalization)
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.

normalizationThe compiler flags denoting the normalization settings.
A potentially replaced AST or itself.

Implemented in ASTLiteral, ASTIdentifier, ASTFunction, ASTUnaryOp, ASTBinaryOp, and ASTConditional.

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