The abstract matcher base class template defines an interface for all pattern matcher engines. More...
#include <absmatcher.h>
Classes | |
struct | Const |
AbstractMatcher::Const common constants. More... | |
class | Iterator |
AbstractMatcher::Iterator class for scanning, searching, and splitting input character sequences. More... | |
class | Operation |
AbstractMatcher::Operation functor to match input to a pattern, also provides a (const) AbstractMatcher::iterator to iterate over matches. More... | |
struct | Option |
AbstractMatcher::Options for matcher engines. More... | |
Public Types | |
typedef AbstractMatcher::Iterator< AbstractMatcher > | iterator |
std::input_iterator for scanning, searching, and splitting input character sequences More... | |
typedef AbstractMatcher::Iterator< const AbstractMatcher > | const_iterator |
Public Member Functions | |
virtual void | reset (const char *opt=NULL) |
Reset this matcher's state to the initial state and set options (when provided). More... | |
bool | buffer (size_t blk=0) |
Set buffer block size for reading: use 1 for interactive input, 0 (or omit argument) to buffer all input in which case returns true if all the data could be read and false if a read error occurred. More... | |
void | interactive (void) |
Set buffer to 1 for interactive input. More... | |
void | flush (void) |
Flush the buffer's remaining content. More... | |
virtual AbstractMatcher & | input (const Input &inp) |
Set the input character sequence for this matcher and reset the matcher. More... | |
size_t | matches (void) |
Returns true if the entire input matches this matcher's pattern (and internally caches the true/false result for repeat invocations). More... | |
size_t | accept (void) const |
Returns a positive integer (true) indicating the capture index of the matched text in the pattern or zero (false) for a mismatch. More... | |
const char * | text (void) const |
Returns string with the text matched. More... | |
size_t | size (void) const |
Returns the length of the matched text in number of bytes. More... | |
size_t | wsize (void) const |
Returns the length of the matched text in number of (wide) characters. More... | |
size_t | lineno (void) const |
Returns the line number of the match in the input character sequence. More... | |
size_t | columno (void) const |
Returns the column number of matched text, counting wide characters (unless compiled with WITH_BYTE_COLUMNO). More... | |
std::pair< size_t, std::string > | pair () const |
Returns a pair of size_t accept() and std::string text(), useful for tokenizing input into containers of pairs. More... | |
size_t | first (void) const |
Returns the position of the first character starting the match in the input character sequence. More... | |
size_t | last (void) const |
Returns the position of the last character + 1 after of the match in the input character sequence. More... | |
bool | at_bob (void) const |
Returns true if this matcher is at the start of an input character sequence. Use reset() to restart input. More... | |
bool | at_end (void) |
Returns true if this matcher has no more input to read from the input character sequence. More... | |
bool | hit_end (void) const |
Returns true if this matcher hit the end of the input character sequence. More... | |
void | set_end (bool eof) |
Set and force the end of input state. More... | |
bool | at_bol (void) const |
Returns true if this matcher reached the begin of a new line. More... | |
void | set_bol (bool bol) |
Set the begin of a new line state. More... | |
int | input (void) |
Returns the next character from the input character sequence while preserving the current text match. More... | |
void | unput (char c) |
Put back one character on the input character sequence for matching, invalidating the current match info and text. More... | |
const char * | rest (void) |
Fetch the rest of the input as text, useful for searching/splitting up to n times after which the rest is needed. More... | |
void | more (void) |
Append the next match to the currently matched text returned by AbstractMatcher::text, when the next match found is adjacent to the current match. More... | |
void | less (size_t n) |
Truncate the AbstractMatcher::text length of the match to n characters in length and reposition for next match. More... | |
operator size_t () const | |
Cast this matcher to positive integer indicating the nonzero capture index of the matched text in the pattern, same as AbstractMatcher::accept. More... | |
operator std::string () const | |
Cast this matcher to a std::string of the text matched by this matcher. More... | |
operator std::pair< size_t, std::string > () const | |
Cast this matcher to a pair of size_t accept() and std::string text(), useful for tokenization into containers. More... | |
bool | operator== (const char *rhs) const |
Returns true if matched text is equal to a string, useful for std::algorithm. More... | |
bool | operator== (const std::string &rhs) const |
Returns true if matched text is equalt to a string, useful for std::algorithm. More... | |
bool | operator== (size_t rhs) const |
Returns true if capture index is equal to a given size_t value, useful for std::algorithm. More... | |
bool | operator== (int rhs) const |
Returns true if capture index is equal to a given int value, useful for std::algorithm. More... | |
bool | operator!= (const char *rhs) const |
Returns true if matched text is not equal to a string, useful for std::algorithm. More... | |
bool | operator!= (const std::string &rhs) const |
Returns true if matched text is not equal to a string, useful for std::algorithm. More... | |
bool | operator!= (size_t rhs) const |
Returns true if capture index is not equal to a given size_t value, useful for std::algorithm. More... | |
bool | operator!= (int rhs) const |
Returns true if capture index is not equal to a given int value, useful for std::algorithm. More... | |
Public Attributes | |
Operation | scan |
functor to scan input (to tokenize input) More... | |
Operation | find |
functor to search input More... | |
Operation | split |
functor to split input More... | |
Input | in |
input character sequence being matched by this matcher More... | |
Protected Types | |
typedef int | Method |
Protected Member Functions | |
AbstractMatcher (const Input &inp, const char *opt) | |
Construct a base abstract matcher. More... | |
AbstractMatcher (const Input &inp, const Option &opt) | |
Construct a base abstract matcher. More... | |
void | init (const char *opt=NULL) |
Initialize the base abstract matcher at construction. More... | |
virtual size_t | get (char *s, size_t n) |
Returns more input (method can be overriden as by reflex::FlexLexer::get to invoke reflex::FlexLexer::LexerInput). More... | |
virtual bool | wrap (void) |
Returns true if wrapping of input after EOF is supported. More... | |
virtual size_t | match (Method method)=0 |
The abstract match operation implemented by pattern matching engines derived from AbstractMatcher. More... | |
bool | grow (size_t need=Const::BLOCK) |
Shift or expand the internal buffer when it is too small to accommodate more input, where the buffer size is doubled when needed. More... | |
int | get (void) |
Returns the next character from the buffered input character sequence. More... | |
int | peek (void) |
Peek at the next character in the buffered input without consuming it. More... | |
void | set_current (size_t loc) |
Set the current position to advance to the next match. More... | |
Protected Attributes | |
Option | opt_ |
options for matcher engines More... | |
char * | buf_ |
input character sequence buffer More... | |
const char * | txt_ |
points to the matched text in buffer AbstractMatcher::buf_ More... | |
size_t | len_ |
size of the matched text More... | |
size_t | cap_ |
nonzero capture index of an accepted match or zero More... | |
size_t | cur_ |
next position in AbstractMatcher::buf_ to assign to AbstractMatcher::txt_ More... | |
size_t | pos_ |
position in AbstractMatcher::buf_ after AbstractMatcher::txt_ More... | |
size_t | end_ |
ending position of the input buffered in AbstractMatcher::buf_ More... | |
size_t | max_ |
total buffer size and max position + 1 to fill More... | |
size_t | ind_ |
current indent position More... | |
size_t | blk_ |
block size for block-based input reading, as set by AbstractMatcher::buffer More... | |
int | got_ |
last unsigned character we looked at (to determine anchors and boundaries) More... | |
int | chr_ |
the character located at AbstractMatcher::buf_[AbstractMatcher::pos_] More... | |
size_t | lno_ |
line number count (prior to this buffered input) More... | |
size_t | cno_ |
column number count (prior to this buffered input) More... | |
size_t | num_ |
character count (number of characters flushed prior to this buffered input) More... | |
bool | eof_ |
input has reached EOF More... | |
bool | mat_ |
true if AbstractMatcher::matches() was successful More... | |
Private Member Functions | |
void | update (void) |
Update the newline count, column count, and character count when shifting the buffer. More... | |
The abstract matcher base class template defines an interface for all pattern matcher engines.
The buffer expands when matches do not fit. The buffer size is initially 2*BLOCK size.
More info TODO
std::input_iterator for scanning, searching, and splitting input character sequences
std::input_iterator for scanning, searching, and splitting input character sequences
|
protected |
a method is one of Const::SCAN, Const::FIND, Const::SPLIT, Const::MATCH
|
inlineprotected |
Construct a base abstract matcher.
inp | input character sequence for this matcher |
opt | option string of the form (A|N|T(=[[:digit:]])?|;)* |
Construct a base abstract matcher.
inp | input character sequence for this matcher |
opt | options |
|
inline |
Returns a positive integer (true) indicating the capture index of the matched text in the pattern or zero (false) for a mismatch.
|
inline |
Returns true if this matcher is at the start of an input character sequence. Use reset() to restart input.
|
inline |
Returns true if this matcher reached the begin of a new line.
|
inline |
Returns true if this matcher has no more input to read from the input character sequence.
|
inline |
Set buffer block size for reading: use 1 for interactive input, 0 (or omit argument) to buffer all input in which case returns true if all the data could be read and false if a read error occurred.
blk | new block size between 1 and Const::BLOCK, or 0 to buffer all |
|
inline |
Returns the column number of matched text, counting wide characters (unless compiled with WITH_BYTE_COLUMNO).
|
inline |
Returns the position of the first character starting the match in the input character sequence.
|
inline |
Flush the buffer's remaining content.
|
inlineprotectedvirtual |
Returns more input (method can be overriden as by reflex::FlexLexer::get to invoke reflex::FlexLexer::LexerInput).
s |
n | size of buffer pointed to by s |
|
inlineprotected |
Returns the next character from the buffered input character sequence.
|
inlineprotected |
Shift or expand the internal buffer when it is too small to accommodate more input, where the buffer size is doubled when needed.
need | optional needed space = Const::BLOCK size by default |
|
inline |
Returns true if this matcher hit the end of the input character sequence.
|
inlineprotected |
Initialize the base abstract matcher at construction.
opt | options |
|
inlinevirtual |
Set the input character sequence for this matcher and reset the matcher.
inp | input character sequence for this matcher |
|
inline |
Returns the next character from the input character sequence while preserving the current text match.
|
inline |
Set buffer to 1 for interactive input.
|
inline |
Returns the position of the last character + 1 after of the match in the input character sequence.
|
inline |
Truncate the AbstractMatcher::text length of the match to n characters in length and reposition for next match.
n | truncated string length |
|
inline |
Returns the line number of the match in the input character sequence.
|
protectedpure virtual |
The abstract match operation implemented by pattern matching engines derived from AbstractMatcher.
Implemented in reflex::Matcher, reflex::StdMatcher, and reflex::BoostMatcher.
|
inline |
Returns true if the entire input matches this matcher's pattern (and internally caches the true/false result for repeat invocations).
|
inline |
Append the next match to the currently matched text returned by AbstractMatcher::text, when the next match found is adjacent to the current match.
|
inline |
Cast this matcher to positive integer indicating the nonzero capture index of the matched text in the pattern, same as AbstractMatcher::accept.
|
inline |
|
inline |
Cast this matcher to a std::string of the text matched by this matcher.
|
inline |
Returns true if matched text is not equal to a string, useful for std::algorithm.
rhs | rhs string to compare to |
|
inline |
Returns true if matched text is not equal to a string, useful for std::algorithm.
rhs | rhs string to compare to |
|
inline |
Returns true if capture index is not equal to a given size_t value, useful for std::algorithm.
rhs | capture index to compare accept() to |
|
inline |
Returns true if capture index is not equal to a given int value, useful for std::algorithm.
rhs | capture index to compare accept() to |
|
inline |
Returns true if matched text is equal to a string, useful for std::algorithm.
rhs | rhs string to compare to |
|
inline |
Returns true if matched text is equalt to a string, useful for std::algorithm.
rhs | rhs string to compare to |
|
inline |
Returns true if capture index is equal to a given size_t value, useful for std::algorithm.
rhs | capture index to compare accept() to |
|
inline |
Returns true if capture index is equal to a given int value, useful for std::algorithm.
rhs | capture index to compare accept() to |
|
inline |
|
inlineprotected |
Peek at the next character in the buffered input without consuming it.
|
inlinevirtual |
Reset this matcher's state to the initial state and set options (when provided).
Reimplemented in reflex::Matcher, reflex::BoostMatcher, and reflex::StdMatcher.
|
inline |
Fetch the rest of the input as text, useful for searching/splitting up to n times after which the rest is needed.
|
inline |
Set the begin of a new line state.
|
inlineprotected |
Set the current position to advance to the next match.
loc | new location in buffer |
|
inline |
Set and force the end of input state.
|
inline |
Returns the length of the matched text in number of bytes.
|
inline |
Returns string with the text matched.
|
inline |
Put back one character on the input character sequence for matching, invalidating the current match info and text.
c | character to put back |
|
inlineprivate |
Update the newline count, column count, and character count when shifting the buffer.
|
inlineprotectedvirtual |
Returns true if wrapping of input after EOF is supported.
|
inline |
Returns the length of the matched text in number of (wide) characters.
|
protected |
block size for block-based input reading, as set by AbstractMatcher::buffer
|
protected |
input character sequence buffer
|
protected |
nonzero capture index of an accepted match or zero
|
protected |
the character located at AbstractMatcher::buf_[AbstractMatcher::pos_]
|
protected |
column number count (prior to this buffered input)
|
protected |
next position in AbstractMatcher::buf_ to assign to AbstractMatcher::txt_
|
protected |
ending position of the input buffered in AbstractMatcher::buf_
|
protected |
input has reached EOF
Operation reflex::AbstractMatcher::find |
functor to search input
|
protected |
last unsigned character we looked at (to determine anchors and boundaries)
Input reflex::AbstractMatcher::in |
input character sequence being matched by this matcher
|
protected |
current indent position
|
protected |
size of the matched text
|
protected |
line number count (prior to this buffered input)
|
protected |
true if AbstractMatcher::matches() was successful
|
protected |
total buffer size and max position + 1 to fill
|
protected |
character count (number of characters flushed prior to this buffered input)
|
protected |
options for matcher engines
|
protected |
position in AbstractMatcher::buf_ after AbstractMatcher::txt_
Operation reflex::AbstractMatcher::scan |
functor to scan input (to tokenize input)
Operation reflex::AbstractMatcher::split |
functor to split input
|
protected |
points to the matched text in buffer AbstractMatcher::buf_