ALib C++ Library
Library Version: 2312 R0
Documentation generated by doxygen
Public Types | Public Fields | Public Methods | List of all members
AST Struct Referenceabstract

#include <ast.hpp>

Inheritance diagram for AST:
[legend]

Class Description

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.

Public Types

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

Public Fields

Types NodeType
 
integer Position
 

Public Methods

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

Member Enumeration Documentation

◆ Types

enum Types
strong

The type of node.

Definition at line 33 of file ast.hpp.

Constructor & Destructor Documentation

◆ AST() [1/2]

AST ( )
delete

Deleted default constructor.

◆ AST() [2/2]

AST ( Types  type,
integer  position 
)
inline

Constructor

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

Definition at line 57 of file ast.hpp.

◆ ~AST()

virtual ~AST ( )
inlinevirtual

Virtual destructor.

Definition at line 63 of file ast.hpp.

Member Function Documentation

◆ 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.

Parameters
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 ASTConditional, ASTBinaryOp, ASTUnaryOp, ASTFunction, ASTIdentifier, and ASTLiteral.

◆ 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.

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

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

Member Data Documentation

◆ 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.


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