CoreComponents 3.0.0
A Modern C++ Toolkit
Loading...
Searching...
No Matches
LongestChoiceNode Class Referencefinal

Try all sub-expression choices and produce the longest match (without considering the rest of the expression). More...

#include <cc/syntax_node/LongestChoiceNode>

Inheritance diagram for LongestChoiceNode:

Public Member Functions

 LongestChoiceNode (std::initializer_list< SyntaxNode > choices)
 
 LongestChoiceNode (const Array< SyntaxNode > &choices)
 
Array< SyntaxNodechoices () const
 
- Public Member Functions inherited from SyntaxNode
 SyntaxNode ()=default
 Create an null syntax node.
 
 SyntaxNode (char ch)
 
 SyntaxNode (const char *s)
 
 SyntaxNode (const SyntaxRule *rule)
 
 SyntaxNode (Function< bool(char)> &&match)
 
long matchNext (const String &text, long offset, Token &production) const
 Match text at offset against this node.
 
long matchLength () const
 Match length for this node (or -1 if variable)
 
String hint () const
 Hint for generating syntax error messages (Expect failed)
 
List< Stringexplain () const
 Convert to a human-readable form.
 
- Public Member Functions inherited from Object
 Object ()=default
 Create a null object.
 
 operator bool () const
 Check if this is a non-null object.
 
bool isNull () const
 Check if this is a null object.
 
template<class T >
bool is () const
 Check if this object is of type T.
 
template<class T >
as () const
 Cast this object to type T.
 
bool isWeak () const
 Check if the underlying object reference is weak.
 
bool operator== (const Object &other) const
 Equality operator.
 
std::strong_ordering operator<=> (const Object &other) const
 Ordering operator.
 
long useCount () const
 Reference count.
 

Additional Inherited Members

- Protected Member Functions inherited from SyntaxNode
 SyntaxNode (State *newState)
 
State & me ()
 
const State & me () const
 
- Protected Member Functions inherited from Object
template<class T >
weak () const
 
template<class T >
void initOnce ()
 Create the object state when called the first time.
 
template<class T >
void initOncePerThread ()
 Create a distinct object state for each thread when called the first time in that thread.
 
 Object (State *newState)
 Initialize object with newState.
 
 Object (State *state, Alias)
 
 Object (State *state, Weak)
 
Objectoperator= (std::nullptr_t)
 
- Static Protected Member Functions inherited from Object
template<class T >
static T alias (const State *state)
 Create an alias object for the given state.
 
template<class T >
static T weak (const State *state)
 
- Protected Attributes inherited from Object
Handle< Stateme
 Internal object state
 

Detailed Description

Try all sub-expression choices and produce the longest match (without considering the rest of the expression).

Note
The ChoiceNode does not take into account the subsequent syntax nodes to resolve ambiguity in matching the entire text.

Constructor & Destructor Documentation

◆ LongestChoiceNode() [1/2]

LongestChoiceNode ( std::initializer_list< SyntaxNode > choices)
explicit
Parameters
choicesSub-expresssion choices

◆ LongestChoiceNode() [2/2]

LongestChoiceNode ( const Array< SyntaxNode > & choices)
explicit
Parameters
choicesSub-expresssion choices