bnfa Home
Status: Alpha
Brought to you by:
breese
BNFA is C++ regular expression matcher based on non-deterministic finite automata (NFA).
BNFA uses overloaded operators for writing regular expressions. This syntax was inspired by Boost.Spirit (www.boost.org).
| Element | Regular expression | BNFA |
|---|---|---|
| Optional | A? | -A |
| One-or-more | A+ | +A |
| Zero-or-more | A* | *A |
| Exactly N times | A{N} | A(N) |
| Between M and N times | A{M,N} | A(M,N) |
| Concatenation | AB | A >> B |
| Alternation | A | B | A | B |
| Separated list | A(BA)* | A % B |
| Positive lookahead | (?=A) | &A |
| Negative lookahead | (?!A) | !A |
| Character | a | text("a") |
| Any character | . | any() |
| Character sequence | abc | text("abc") |
| Character group | [abc] | group("abc") |
| Character range | [a-z] | range('a', 'z') |
rule alphabetic = range('A', 'Z') | range('a', 'z');
rule digit = range('0', '9');
rule floating = -( group("+-") ) >> ( ( *digit >> text(".") >> +digit ) | +digit );