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])
#define ALIB_ASSERT_ERROR(cond, domain,...)
bool RemoveNamed(const String &name)
Normalization CfgNormalization
ListMA< String > UnaryOperators
Compilation CfgCompilation
Compilation flags.
virtual Expression Compile(const String &expressionString)
NString TypeName(Type box)
StringVectorMA CfgNormalizationDisallowed
void WriteFunctionSignature(Box **boxArray, size_t qty, AString &target)
virtual 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 bool AddNamed(const String &name, const String &expressionString)
ExpressionRepository * Repository
void getOptimizedExpressionString(ExpressionVal &expression)
String CfgNestedExpressionThrowIdentifier
HashMap< MonoAllocator, String, int > BinaryOperators
void AddUnaryOperator(const String &symbol)
@ AutoCast
Installs #"plugins::AutoCast;*".
@ DateAndTime
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 Scope * createCompileTimeScope(MonoAllocator &expressionAllocator)
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 ~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 #"F;ALib.Expressions.H" for technical reasons.
Scope * getExpressionCTScope(ExpressionVal &ev)
MonoAllocator & getExpressionAllocator(ExpressionVal &ev)
Compiler::PluginList & getCompilerPlugins(Compiler &cmp)
std::vector< Slot > PluginList
PluginList plugins
The plug-ins we have attached in descending priority order.
#define ALIB_ENUMS_MAKE_BITWISE(TEnum)
const alib::boxing::Box & Type
StdVectorMA< Box >::iterator ArgIterator
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
strings::TString< nchar > NString
Type alias in namespace alib.
constexpr String NULL_STRING
A nulled string of the default character type.
containers::SharedPtr< format::Formatter > SPFormatter
containers::List< T, MonoAllocator, TRecycling > ListMA
Type alias in namespace alib.
strings::util::TStringVector< character, MonoAllocator > StringVectorMA
Type alias in namespace alib.
strings::TAString< nchar, lang::HeapAllocator > NAString
Type alias in namespace alib.
boxing::Box Box
Type alias in namespace alib.
expressions::Compiler Compiler
Type alias in namespace alib.
containers::HashMap< TAllocator, TKey, TMapped, THash, TEqual, THashCaching, TRecycling > HashMap
Type alias in namespace alib.
strings::TString< character > String
Type alias in namespace alib.
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
This detail class constitutes an abstract base class for expression parsers.
Base class exported by the main module #"F;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.