63 using Plugins= std::vector<lang::PluginContainer<CompilerPlugin, CompilePriorities>::Slot>;
116 alib::hash_string_ignore_case<character>,
126 alib::hash_string_ignore_case<character>,
138 if( op.Equals<
NC>( symbol ) )
167 "Binary operator '{}' already defined.", symbol )
183 "Unknown binary operator '{}'.", symbol )
187 "Unknown binary operator '{}' which was aliased by '{}'.",
188 aliasOp->second, symbol )
538DOX_MARKER([DOX_MANUAL_ALIASES_COMPILER])
543DOX_MARKER([DOX_MANUAL_ALIASES_COMPILER])
bool RemoveNamed(const String &name)
Normalization CfgNormalization
ListMA< String > UnaryOperators
Compilation CfgCompilation
Compilation flags.
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.
const alib::boxing::Box & Type
StdVectorMA< Box >::iterator ArgIterator
constexpr String NULL_STRING
A nulled string of the default character type.
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
containers::List< T, MonoAllocator, TRecycling > ListMA
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.
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.