8#ifndef HPP_ALIB_EXPRESSIONS_DETAIL_PROGRAM
9#define HPP_ALIB_EXPRESSIONS_DETAIL_PROGRAM
11#ifndef HPP_ALIB_EXPRESSIONS_DETAIL_VIRTUAL_MACHINE
15#ifndef HPP_ALIB_EXPRESSIONS_COMPILER
19#if !defined (HPP_ALIB_MONOMEM_LIST)
23#if !defined (HPP_ALIB_MONOMEM_STDCONTAINERMA)
27#if !defined (HPP_ALIB_MONOMEM_MASTRING)
31namespace alib {
namespace expressions {
94 std::vector<VirtualMachine::Command*, StdContMA<VirtualMachine::Command*>>
99 std::vector<VM::PC,StdContMA<VM::PC>>
107 #if !defined(ALIB_DOX)
125 std::vector<ConditionalInfo, StdContMA<ConditionalInfo>>
ALIB_API void AssembleCondFinalize_T(integer idxInOriginal, integer idxInNormalized)
ALIB_API const Box & ResultType() const
CompileStorage * compileStorage
ALIB_API bool collectArgs(integer qty)
ALIB_API Program(Compiler &pCompiler, Expression &pExpression, MonoAllocator *compileTimeAllocator)
ALIB_API void AssembleCondFinalize_F(integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleUnaryOp(String &op, integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleFunction(AString &functionName, integer qtyArgsOrNoParentheses, integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleConstant(Box &value, integer idxInOriginal, integer idxInNormalized)
ALIB_API void AssembleCondFinalize_Q(integer idxInOriginal, integer idxInNormalized)
std::vector< SPExpression, StdContMA< SPExpression > > ctNestedExpressions
int CountOptimizations() const
ALIB_API void AssembleFinalize()
VM::Command & At(VM::PC pc)
ALIB_API void AssembleBinaryOp(String &op, integer idxInOriginal, integer idxInNormalized)
integer PC
Type definition for a program counter.
static ALIB_API alib::Box Run(Program &program, Scope &scope)
#define ALIB_WARNINGS_RESTORE
#define ALIB_WARNINGS_ALLOW_UNSAFE_BUFFER_USAGE
std::shared_ptr< Expression > SPExpression
lang::integer integer
Type alias in namespace alib.
VM::PC QJumpPos
The position of the lhs result.
VM::PC TJumpPos
The position of the jump command between T and F.
std::vector< ConditionalInfo, StdContMA< ConditionalInfo > > ConditionalStack
List< String > FunctionsWithNonMatchingArguments
CompileStorage(MonoAllocator &compileTimeAllocator)
std::vector< VirtualMachine::Command *, StdContMA< VirtualMachine::Command * > > Assembly
std::vector< VM::PC, StdContMA< VM::PC > > ResultStack