Inherits Garbage. Inherited by EmailParser, ImapParser, SieveParser and SmtpParser.
Provides simple functions to parse ABNF productions.
This class maintains a cursor for an input EString and provides functions to examine or extract tokens, advancing the cursor as required. These generic functions may be used by subclasses (e.g. ImapParser) to parse more complex productions.
The functions usually return a token extracted from the input string at the cursor, and advance the cursor to point to the next token. If the input cannot be parsed, a function might return an invalid token (e.g. nextChar() returns 0 once the cursor has passed the end of the input) or signal an error (e.g. end() complains if any input is left over once we've finished parsing what we expected to). In the latter case, ok() is false and error() returns a suitable message (and the input cannot be parsed any further).
In typical usage, one would create a new AbnfParser object for a string, step through its contents with functions like nextChar(), step(), and require(), then call end() when the string has been completely parsed.
Constructs an AbnfParser for the EString s.
Returns true if we have parsed the entire input string, and false otherwise.
Returns a string of between min and max digits at the cursor and advances the cursor past them. If fewer than min digits are available, it is an error().
Asserts that the input has been completely parsed. It is considered an error() if any input text remains when this function is called.
Returns a message describing the first parse error encountered, or an empty string if no errors have occurred (in which case ok() is also true).
Returns a string of no more than 15 characters containing the first unparsed bits of input. Meant for use in error messages.
Returns the input string.
Returns a string of between min and max letters ([A-Za-z]) at the cursor and advances the cursor past them. If fewer than min letters are available, it is an error().
Saves the current cursor position and error state of the parser and returns an identifier of the current mark. The companion function restore() restores the last or a specified mark. The returned mark is never 0.
Returns the next character at the cursor without changing the cursor position. Returns 0 if there isn't a character available (e.g. when the cursor is past the end of the input string).
Returns the unsigned integer (0*|[1-9][0-9]*) at the cursor and advances the cursor past it. It is an error() if there isn't an integer at the cursor, or if a non-zero number is specified with a leading 0 digit.
Returns false once this object has encountered an error during parsing (in which case error() will return a suitable message), or true if it's still usable.
Returns the current (0-indexed) position of the cursor in the input() string without changing anything.
Checks whether the next characters in the input match s. If so, present() steps past the matching characters and returns true. If not, it returns false without advancing the cursor. The match is case insensitive.
Requires that the next characters in the input match s (case insensitively), and steps past the matching characters. If s is not present(), it is considered an error().
Restores the cursor position and error state at the time when mark() returned m. Does nothing if m is not a valid mark. m remains valid, so it's possibble to restore( m ) again.
Restores the last mark()ed cursor position and error state of this parser object.
Sets the object's error() to s, provided this is the first time setError() is called with a nonempty argument. (error() returns the argument to the first setError() call.)
ok() will return false after this function has been called with a non-empty argument. This function is intended for use by the individual parser functions.
Advances the cursor past n characters (1 by default) of the input.
Virtual destructor for the benefit of subclasses.
This web page based on source code belonging to The Archiveopteryx Developers. All rights reserved.