An base class designed for parsers that use LLLPG (Loyc LL(k) Parser Generator) and receive tokens from any IEnumerator{Token}.
This base class for LLLPG parsers simply requires an enumerator to work, and it has a small buffer to hold lookahead tokens. Old tokens are forgotten, so this base class does not support backtracking (i.e. syntactic predicates), but it can save memory. Please use BaseParserForList{Tok,La} if your input sequence comes in the form of a list.
This version of BaseParser has Enumerator as a generic parameter. Compared to using IEnumerator{Token} directly, this can increase performance in case Enumerator is a value type (e.g. List<Token>.Enumerator
).
(I wrote this class by mistake... I actually forgot about backtracking!)
- Type Constraints
-
Token | : | ISimpleToken | |
Enumerator | : | IEnumerator<Token> | |
|
| BaseParserNoBacktracking (Enumerator sequence, Token eofToken, ISourceFile file, int startIndex=0) |
| Initializes this object to begin parsing the specified tokens. More...
|
|
void | Reset (Enumerator sequence, Token eofToken, ISourceFile file, int startIndex=0) |
|
sealed override Int32 | EofInt () |
| Returns the value used for EOF (normally 0) More...
|
|
sealed override Token | LT (int i) |
| Returns the Token at lookahead i, where 0 is the next token. This class does not support negative lookahead because old tokens from the IEnumerator are discarded. More...
|
|
abstract override string | ToString (Int32 tokenType) |
| Returns a string representation of the specified token type. These strings are used in error messages. More...
|
|
| BaseParser (ISourceFile file=null, int startIndex=0) |
|
| BaseParser (ISourceFile file=null, int startIndex=0) |
|
abstract string | ToString (MatchType tokenType) |
| Returns a string representation of the specified token type. These strings are used in error messages. More...
|
|
virtual int | LaIndexToCharIndex (int lookaheadIndex) |
| Converts a lookahead token index to a character index (used for error reporting). More...
|
|
virtual object | LaIndexToSourcePos (int lookaheadIndex) |
| Converts a lookahead token index to a SourcePos object using LaIndexToCharIndex and SourceFile. More...
|
|
virtual void | Error (int lookaheadIndex, string message) |
| Records an error or throws an exception. More...
|
|
virtual void | Error (int lookaheadIndex, string format, params object[] args) |
|
void | Skip () |
|
Token | MatchAny () |
|
Token | Match (HashSet< MatchType > set, bool inverted=false) |
|
Token | Match (MatchType a) |
|
Token | Match (MatchType a, MatchType b) |
|
Token | Match (MatchType a, MatchType b, MatchType c) |
|
Token | Match (MatchType a, MatchType b, MatchType c, MatchType d) |
|
Token | MatchExcept () |
|
Token | MatchExcept (MatchType a) |
|
Token | MatchExcept (MatchType a, MatchType b) |
|
Token | MatchExcept (MatchType a, MatchType b, MatchType c) |
|
Token | MatchExcept (MatchType a, MatchType b, MatchType c, MatchType d) |
|
Token | MatchExcept (HashSet< MatchType > set) |
|
bool | TryMatch (HashSet< MatchType > set, bool inverted=false) |
|
bool | TryMatch (MatchType a) |
|
bool | TryMatch (MatchType a, MatchType b) |
|
bool | TryMatch (MatchType a, MatchType b, MatchType c) |
|
bool | TryMatch (MatchType a, MatchType b, MatchType c, MatchType d) |
|
bool | TryMatchExcept () |
|
bool | TryMatchExcept (MatchType a) |
|
bool | TryMatchExcept (MatchType a, MatchType b) |
|
bool | TryMatchExcept (MatchType a, MatchType b, MatchType c) |
|
bool | TryMatchExcept (MatchType a, MatchType b, MatchType c, MatchType d) |
|
bool | TryMatchExcept (HashSet< MatchType > set) |
|
void | Error (bool inverted, params MatchType[] expected) |
|
virtual void | Error (bool inverted, IEnumerable< MatchType > expected) |
|
virtual string | ToString (bool inverted, IEnumerable< MatchType > expected) |
|
virtual void | Check (bool expectation, string expectedDescr="") |
|