65 using Plugins= std::vector<lang::PluginContainer<CompilerPlugin, CompilePriorities>::Slot>;
118 alib::hash_string_ignore_case<character>,
128 alib::hash_string_ignore_case<character>,
141 if( op.Equals<
NC>( symbol ) )
171 "Binary operator '{}' already defined.", symbol )
188 "Unknown binary operator '{}'.", symbol )
192 "Unknown binary operator '{}' which was aliased by '{}'.",
193 aliasOp->second, symbol )
572DOX_MARKER([DOX_MANUAL_ALIASES_COMPILER])
577DOX_MARKER([DOX_MANUAL_ALIASES_COMPILER])
bool RemoveNamed(const String &name)
Normalization CfgNormalization
Compilation CfgCompilation
Compilation flags.
List< MonoAllocator, String > UnaryOperators
virtual ALIB_DLL Expression Compile(const String &expressionString)
ALIB_DLL NString TypeName(Type box)
StringVectorMA CfgNormalizationDisallowed
ALIB_DLL void WriteFunctionSignature(Box **boxArray, size_t qty, AString &target)
virtual ALIB_DLL Expression GetNamed(const String &name)
BuiltInPlugins CfgBuiltInPlugins
void AddBinaryOperator(const String &symbol, int precedence)
std::vector< lang::PluginContainer< CompilerPlugin, CompilePriorities >::Slot > Plugins
Alias shortcut to the type of the plug-in vector inherited from PluginContainer.
strings::util::Token CfgNestedExpressionFunction
virtual ALIB_DLL bool AddNamed(const String &name, const String &expressionString)
ExpressionRepository * Repository
ALIB_DLL void getOptimizedExpressionString(ExpressionVal &expression)
String CfgNestedExpressionThrowIdentifier
HashMap< MonoAllocator, String, int > BinaryOperators
ALIB_DLL void SetupDefaults()
void AddUnaryOperator(const String &symbol)
@ AutoCast
Installs plugins::AutoCast.
@ IF_ALIB_CAMP
Installs plugins::DateAndTime. )
@ ALL
Installs all plug-ins.
@ Arithmetics
Installs plugins::Arithmetics.
@ Strings
Installs plugins::Strings.
@ Math
Installs plugins::Math.
@ NONE
Installs no plug-in.
@ ElvisOperator
Installs plugins::ElvisOperator.
detail::Parser * parser
The expression parser.
virtual ALIB_DLL Scope * createCompileTimeScope(MonoAllocator &expressionAllocator)
ALIB_DLL void AddType(Type sample, const NString &name)
HashMap< MonoAllocator, AString, Expression, std::hash< String >, std::equal_to< String > > namedExpressions
The map of 'named' expressions.
HashMap< MonoAllocator, String, String, alib::hash_string_ignore_case< character >, alib::equal_to_string_ignore_case< character > > AlphabeticUnaryOperatorAliases
MonoAllocator & GetAllocator()
HashMap< MonoAllocator, lang::TypeFunctors::Key, NAString, lang::TypeFunctors::Hash, lang::TypeFunctors::EqualTo > typeMap
The map of Type names and bit flag values.
int GetBinaryOperatorPrecedence(const String &symbol)
String CfgNestedExpressionOperator
virtual ALIB_DLL ~Compiler()
Destructor.
HashMap< MonoAllocator, String, String, alib::hash_string_ignore_case< character >, alib::equal_to_string_ignore_case< character > > AlphabeticBinaryOperatorAliases
virtual bool Get(const String &identifier, AString &target)=0
virtual ~ExpressionRepository()
Virtual destructor.
MonoAllocator & allocator
Base class exported by the main module ALib.Expressions.H for technical reasons.
Scope * getExpressionCTScope(ExpressionVal &ev)
MonoAllocator & getExpressionAllocator(ExpressionVal &ev)
Compiler::PluginList & getCompilerPlugins(Compiler &cmp)
PluginList plugins
The plug-ins we have attached in descending priority order.
std::vector< Slot > PluginList
#define ALIB_ENUMS_MAKE_BITWISE(TEnum)
#define ALIB_ASSERT_ERROR(cond, domain,...)
@ DateAndTime
Collection of date and time functions based on alib::time.
StdVectorMono< Box >::iterator ArgIterator
const alib::boxing::Box & Type
constexpr String NULL_STRING
A nulled string of the default character type.
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
strings::util::TStringVector< character, MonoAllocator > StringVectorMA
Type alias in namespace alib.
strings::TString< nchar > NString
Type alias in namespace alib.
strings::TAString< nchar, lang::HeapAllocator > NAString
Type alias in namespace alib.
containers::HashMap< TAllocator, TKey, TMapped, THash, TEqual, THashCaching, TRecycling > HashMap
Type alias in namespace alib.
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
boxing::Box Box
Type alias in namespace alib.
containers::SharedPtr< format::Formatter > SPFormatter
strings::TString< character > String
Type alias in namespace alib.
expressions::Compiler Compiler
Type alias in namespace alib.
containers::List< TAllocator, T, TRecycling > List
Type alias in namespace alib.
This detail class constitutes an abstract base class for expression parsers.
Base class exported by the main module ALib.Expressions.H for technical reasons.
static Scope * getExpressionCTScope(ExpressionVal &ev)
Comparison functor for type const std::type_info*.
Hash code functor for type const std::type_info*.
const ::std::type_info * Key
The key type.