8#ifndef HPP_ALIB_EXPRESSIONS_DETAIL_AST
9#define HPP_ALIB_EXPRESSIONS_DETAIL_AST
11#if !defined (HPP_ALIB_EXPRESSIONS_EXPRESSION)
17#if !defined (HPP_ALIB_MONOMEM_LIST)
21namespace alib {
namespace expressions {
namespace detail {
153 AString & normalized )
override;
189 AString & normalized )
override;
216 ,
Name ( pAllocator.EmplaceString(name) )
233 AString & normalized )
override;
#define ALIB_ASSERT_MODULE(modulename)
lang::integer integer
Type alias in namespace alib.
String Operator
The operator symbol.
ASTBinaryOp(const String &op, AST *lhs, AST *rhs, integer position)
virtual AST * Optimize(Normalization normalization) override
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
AST * Rhs
The right-hand-side expression node.
AST * Lhs
The left-hand-side expression node.
virtual ~ASTBinaryOp() override
integer ColonPosition
The index of the colon in the expression string.
ASTConditional(AST *q, AST *t, AST *f, integer position, integer colonPosition)
virtual AST * Optimize(Normalization normalization) override
virtual ~ASTConditional() override
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
ASTFunction(const String name, integer position, MonoAllocator &pAllocator)
String Name
The function name as parsed.
virtual AST * Optimize(Normalization normalization) override
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
List< AST * > Arguments
The argument nodes.
virtual ~ASTFunction() override
ASTIdentifier(const String &name, integer position)
String Name
The name of the identifier as parsed from the expression string.
virtual AST * Optimize(Normalization normalization) override
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
ASTLiteral(integer value, integer position, NFHint hint=NFHint::NONE)
Box Value
The value of the literal.
@ Scientific
Float was given in scientific format.
@ Hexadecimal
Integral value was given in hexadecimal format.
@ Binary
Integral value was given in binary format.
@ Octal
Integral value was given in octal format.
virtual AST * Optimize(Normalization normalization) override
NFHint Format
The value of the literal.
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
ASTLiteral(double value, integer position, NFHint hint=NFHint::NONE)
ASTLiteral(const String &string, integer position)
String Operator
The operator symbol.
virtual ~ASTUnaryOp() override
AST * Argument
The argument node.
virtual AST * Optimize(Normalization normalization) override
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized) override
ASTUnaryOp(const String &op, AST *argument, integer position)
AST(Types type, integer position)
virtual AST * Optimize(Normalization normalization)=0
virtual void Assemble(Program &program, MonoAllocator &allocator, AString &normalized)=0