Macros
Structs
Any is a Generator that generates one character worth of value
ByteLiteral is a generator that will return the specified byte for each
call of the generate method
CharLiteral is a Generator that will return the specified char for each
call of the generate method
CharRange is a generator that will return bytes that represent a char between
n and m inclusively. This is useful for implementing ranges of chars such as
in a regular expression’s character set
Choice is a Generator that will pick one of the Generators specified in
2its choices. Each call to the generate method may return a value from a
different Generator
JoinWith is a Generator that joins a list of Generators with the
specified Generator as the delimiter. In the case of the only one
Generator being specified in the list no delimiter will be added. This is
particularly useful when attempting to match tokens or desiring that
be a separator (eg. some whitespace) between them. In that case this
should be used instead of Sequence so specify the sequence of tokens for
a rule.
Many is a Generator that will generate 0 or more values of its generator
Many1 is a Generator that will generate 1 or more values of its generator
Not is a generator that will return the negation of it’s generator. The
implemenation is dependent on the negate implementation for all other
generators
Optional is a Generator that will optionally choose to generate exactly 1
of its generator or and empty value
Range is a Generator that will produce the specified Generator between n
and m times
RepeastN is a Generator that will product the specified Generator between
0 and n times
Rule is a Generator for invoking a named rule Generator. This is useful
for implementing recursion and avoiding duplication of portions of a
grammar.
SepBy is a Generator that will repeat the generator 0 or more times
separated by the specified separator. A single match will result in no
separator being present, only there there is more than one
SepBy is a Generator that will repeat the generator 1 or more times
separated by the specified separator. A single match will result in no
separator being present, only there there is more than one
Sequence is a Generator that generates all of its generators in the order
in which they are specified. This is useful for sequences of specific
bytes or chars but when multiple tokens are desired JoinWith is likely
more helpful
StringLiteral is a Generator that will return the specified string for
each call of the generate method
Traits
A trait for all Generators to implement. This allows pervasive use of
impl trait throughout the implementations of the various Generators and
allows not specifying concrete types.
Functions
any is a helper to create an Any Generator
byte is a helper to create a ByteLiteral Generator
ch is a helper to create a CharLiteral Generator
char_range is a helper to create a CharRange Generator
choice is a helper to create a Choice Generator. There is also a macro
that generates the Vec and Boxes the individual generators being passed
as choices for brevity and simplicity
join_with is a helper to create a JoinWith Generator. This is also a
macro that handles creating the Vec and boxing the individual Generators
being specified for brevity and simplicity
many is a helper to create a Many Generator
many1 is a helper to create a Many1 Generator
not is a helper to generate a Not Generator
optional is a helper to create an Optional Generator
range is a helper to create a Range Generator
register_rule associates a tree of Generators to a name that can be
later used with the Rule Generator. A rule must always be registered
before a Rule Generator is executed otherwise it will lead to a panic
due to an unknown rule. Rule names are case sensitive and must be unique.
Attempting to register two rules with the same name will result in the
last one being registered being used. This can lead to unexpected
behavior.
repeat_n is a helper to create a RepeatN Generator
rule is a helper to create a Rule Generator
sep_by is a helper to create a SepBy Generator
sep_by1 is a helper to create a SepBy1 Generator
seq is a helper to create a Sequence Generator. This is also a macro that
handles creating the Vec and boxing the individual Generators being
specified for brevity and simplicity
string is a helper to create a StringLiteral Generator
Type Definitions
Rules stores a map of rule name to the tree of Generators. For
multithreaded applications this should be wrapped in an Arc<Mutex>
to provide safe access. Realistically, as long as all rules are added
before generation begins, locking should be unecessary