8#ifndef HPP_ALIB_EXPRESSIONS_CAMP
9#define HPP_ALIB_EXPRESSIONS_CAMP 1
16#include "alib/compatibility/std_boxing_functional.hpp"
20namespace alib {
namespace expressions {
virtual void bootstrap(BootstrapPhases phase) override
virtual void shutdown(ShutdownPhases phase) override
#define ALIB_ASSERT_MODULE(modulename)
#define ALIB_ENUMS_MAKE_BITWISE(TEnum)
#define ALIB_ENUMS_ASSIGN_RECORD(TEnum, TRecord)
#define ALIB_BOXING_VTABLE_DECLARE(TMapped, Identifier)
#define ALIB_ENUMS_MAKE_ARITHMETICAL(TEnum)
#define ALIB_RESOURCED_IN_MODULE(T, Camp, ResName)
@ Positive
'+' operator (usually returns identity value).
@ BitNot
Bitwise not ('~').
@ BoolNot
Boolean not ('!').
@ Negative
'-' operator, negates a value.
StdVectorMono< Box >::iterator ArgIterator
DefaultAlphabeticBinaryOperatorAliases
@ Gt
Verbal alias "Gt" to operator '>'.
@ Equals
Verbal alias "Equals" to operator '=='.
@ Sm
Verbal alias "Sm" to operator '<'.
@ Eq
Verbal alias "Eq" to operator '=='.
@ Or
Verbal alias "Or" to boolean or operator '||'.
@ SmEq
Verbal alias "Smeq" to operator '<='.
@ GtEq
Verbal alias "Gteq" to operator '>='.
@ And
Verbal alias "And" to boolean and operator '&&'.
@ NEq
Verbal alias "Neq" to operator '!='.
@ PluginExceptionFallThrough
@ DefaultAlphabeticOperatorAliases
@ AllowCompileTimeNestedExpressions
@ AllowEmptyParenthesesForIdentifierFunctions
@ CaseSensitiveNamedExpressions
@ AllowIdentifiersForNestedExpressions
@ AllowBitwiseBooleanOperators
@ CallbackExceptionFallThrough
@ AlphabeticOperatorsIgnoreCase
@ AliasEqualsOperatorWithAssignOperator
@ AllowOmittingParenthesesOfParameterlessFunctions
@ BitOr
Binary or ('|'). "or"s all bits of two integral values. Precedence 450.
@ SmallerOrEqual
Smaller or equal operator ('<='). Precedence 600.
@ Divide
Arithmetic division ('/'). Precedence 900.
@ NotEqual
Not equal operator ('!='). Precedence 500.
@ Subtract
Arithmetic subtraction ('-'). Precedence 800.
@ BoolAnd
Boolean and ('&&'). Result is boolean. Precedence 440.
@ Modulo
Arithmetic modulo ('%'). Precedence 900.
@ BoolOr
Boolean or ('||'). Result is boolean. Precedence 430.
@ GreaterOrEqual
Greater or equal operator ('>='). Precedence 600.
@ BitXOr
Binary xor ('^'). "xor"s all bits of two integral values. Precedence 460.
@ Greater
Greater operator ('>'). Precedence 600.
@ Subscript
Array subscripting ('[]'). Precedence hardcoded with parser.
@ Smaller
Smaller operator ('<'). Precedence 600.
@ ShiftLeft
Bitwise shifting of integral values ('<<'). Precedence 700.
@ Multiply
Arithmetic multiplication ('*'). Precedence 900.
@ BitAnd
Binary and ('&'). "and"s all bits of two integral values. Precedence 470.
@ Add
Arithmetic addition ('+'). Precedence 800.
@ ShiftRight
Bitwise shifting of integral values ('>>'). Precedence 700.
@ Equal
Equal operator ('=='). Precedence 500.
@ FunctionInnerBracketSpace
@ ConditionalOpSpaceBeforeQM
@ RedundantUnaryOpBrackets
@ QuoteUnaryNestedExpressionOperatorArgument
@ ReplaceVerbalOperatorsToLowerCase
See sibling flag ReplaceVerbalOperatorsToSymbolic.
@ FunctionSpaceBeforeOpeningBracket
@ FunctionSpaceBeforeComma
@ UnaryOpSpaceIfUnaryFollows
@ RedundantRhsBracketsIfRhsIsStrongerBinaryOp
@ ConditionalOpSpaceAfterQM
@ UnaryOpSpaceIfBracketFollows
@ ReplaceVerbalOperatorsToDefinedLetterCase
See sibling flag ReplaceVerbalOperatorsToSymbolic.
@ FunctionSpaceAfterComma
@ UnaryOpInnerBracketSpace
@ ConditionalOpSpaceBeforeColon
@ SubscriptSpaceBeforeBrackets
@ RedundantBracketsBetweenTwoUnaryOps
@ RedundantBracketsIfLhsAndRhsAreBinaryOps
@ SubscriptInnerBracketSpace
@ FunctionInnerBracketSpaceIfNoArguments
@ RedundantConditionalOpBrackets
@ ReplaceVerbalOperatorsToSymbolic
@ RedundantBinaryOpBrackets
@ RemoveRedundantUnaryOpsOnNumberLiterals
@ ReplaceVerbalOperatorsToUpperCase
See sibling flag ReplaceVerbalOperatorsToSymbolic.
@ ConditionalOpSpaceAfterColon
Box(*)(Scope &scope, ArgIterator argsBegin, ArgIterator argsEnd) CallbackDecl
@ NestedExpressionResultTypeError
@ NestedExpressionCallArgumentMismatch
@ UnknownIdentifier
Compile-time exception thrown when an expression uses an unknown identifier name.
@ CircularNestedExpressions
@ UnaryOperatorNotDefined
@ UnknownFunction
Compile-time exception thrown when an expression uses an unknown function name.
@ NamedExpressionNotFound
Compile-time exception thrown when an expression refers to an unknown named nested expression.
@ MissingFunctionParentheses
@ UnknownBinaryOperatorSymbol
Unknown binary operator symbol found when parsing expression string.
@ UnknownUnaryOperatorSymbol
Unknown unary operator symbol found when parsing expression string.
@ IncompatibleTypesInConditional
@ NestedExpressionNotFoundET
@ EmptyExpressionString
Thrown when an empty string is tried to be compiled.
@ NamedExpressionNotConstant
@ IdentifierWithFunctionParentheses
@ NestedExpressionNotFoundCT
@ WhenEvaluatingNestedExpression
@ SyntaxErrorExpectation
Syntax error with concrete information about what the parser expected at given position.
@ CircularNestedExpressionsInfo
@ BinaryOperatorNotDefined
@ SyntaxError
General error thrown by the parser.
DefaultAlphabeticUnaryOperatorAliases
@ Not
Verbal alias "Not" to operator '!'.
@ AutoCast
Auto-cast plug-in.
@ DateAndTime
Collection of date and time functions based on alib::time.
@ Arithmetics
Collection of built-in unary and binary operators for boolean, integer and floating point values.
@ Strings
Built-in String comparison and manipulation.
@ Math
Collection of built-in unary and binary operators for boolean, integer and floating point values.
@ NONE
Used to denote that no variable or plug-in was found.
ShutdownPhases
Termination levels usable with Bootstrapping ALib Camps.
expressions::ExpressionsCamp EXPRESSIONS
The singleton instance of ALib Camp class ExpressionsCamp.
BootstrapPhases
Initialization levels usable with Bootstrapping ALib Camps.
lox::Scope Scope
Type alias in namespace alib.
boxing::Box Box
Type alias in namespace alib.
int Precedence
The precedence of an operator in respect to other binary operators.
String Symbol
The parable symbol of an operator.
ERBinaryOperator() noexcept=default
ALIB_API void Parse()
Implementation of EnumRecordPrototype::Parse.
String Replacement
The replacement operator symbol.
EROperatorAlias() noexcept=default
String Symbol
The parsable symbol of an alias operator.
ALIB_API void Parse()
Implementation of EnumRecordPrototype::Parse.
void(*)(const Box &constantValue, AString &expressionString) Signature
static ALIB_API Box * SS[2]
Function accepts two string arguments.
static ALIB_API Box * IVar[2]
Function accepts one integral argument, followed by variadic arguments.
static ALIB_API Box * D[1]
Function accepts a DateTime argument.
static ALIB_API Box * DDur[2]
Function accepts a DateTime argument; followed by a Duration.
static ALIB_API Box * B[1]
Function accepts one boolean argument.
static ALIB_API Box * Var[1]
Function accepts variadic arguments.
static ALIB_API Box * SII[3]
Function accepts one string argument, followed by two integral arguments.
static ALIB_API Box * SSI[3]
Function accepts two string arguments, followed by an integral argument.
static ALIB_API Box * II[2]
Function accepts two integral arguments.
static ALIB_API Box * SVar[2]
Function accepts one string argument, followed by variadic arguments.
static ALIB_API Box * BB[2]
Function accepts two boolean arguments.
static ALIB_API Box * SSB[3]
Function accepts two string arguments, followed by a boolean argument.
static ALIB_API Box * SSS[3]
Function accepts three string arguments.
static ALIB_API Box * SI[2]
Function accepts one string argument, followed by an integral argument.
static ALIB_API Box * F[1]
Function accepts one floating point argument.
static ALIB_API Box * Dur[1]
Function accepts a Duration argument.
static ALIB_API Box * S[1]
Function accepts one string argument.
static ALIB_API Box * FF[2]
Function accepts two floating point arguments.
static ALIB_API Box * I[1]
Function accepts one integral argument.
static ALIB_API Box DateTime
Sample type-box for date and time values of type DateTime).
static ALIB_API Box Duration
Sample type-box for values of type DateTime::Duration).
static ALIB_API Box Void
Sample type-box for C++ type void.
static ALIB_API Box Integer
Sample type-box for integer types. (Precisely for type integer.)
static ALIB_API Box Boolean
Sample type-box for C++ type bool.
static ALIB_API Box String
static ALIB_API Box Float
Sample type-box for C++ type double.