8#ifndef HPP_ALIB_EXPRESSIONS_DETAIL_PARSER_IMPL
9#define HPP_ALIB_EXPRESSIONS_DETAIL_PARSER_IMPL
20namespace alib {
namespace expressions {
62 SubscriptClose =
']' ,
121 alib::hash_string_ignore_case <character>,
131 alib::hash_string_ignore_case <character>,
226 ASTs->emplace_back(ast);
ASTLiteral::NFHint tokLiteralHint
The actual token type.
ALIB_API String getBinaryOp()
HashSet< MonoAllocator, String, alib::hash_string_ignore_case< character >, alib::equal_to_string_ignore_case< character > > unaryOperators
StdVectorMono< AST * > * ASTs
virtual ALIB_API detail::AST * Parse(const String &exprString, NumberFormat *nf) override
integer tokPosition
The position of the token in expression.
Tokens token
The actual token type.
integer tokInteger
Integer value of token (if applicable).
void NextToken()
This is the "scanner" or "lexer" method.
NumberFormat * numberFormat
Used for scanning literals. Provided to this class with each parse request.
virtual ~ParserImpl() override
Virtual destructor.
std::bitset< 256 > operatorChars
ALIB_API String getUnaryOp()
AST * parseSubscript(AST *function)
MonoAllocator & compileTimeAllocator
Substring scanner
The rest of expression.
String expression
The given expression to parse.
Compiler & compiler
The compiler that this parser works for.
ParserImpl(Compiler &compiler, MonoAllocator &allocator)
String tokString
String value of token (if applicable).
std::bitset< 256 > syntaxTokens
double tokFloat
Float value of token (if applicable).
HashSet< MonoAllocator, String, alib::hash_string_ignore_case< character >, alib::equal_to_string_ignore_case< character > > binaryOperators
std::vector< T, SCAMono< T > > StdVectorMono
Type alias in namespace alib.
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
strings::TString< character > String
Type alias in namespace alib.
expressions::Compiler Compiler
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
This detail class constitutes an abstract base class for expression parsers.