abstract classafPegger::Rule
sys::Obj afPegger::Rule
@
Js
(Advanced) Models a PEG Rule.
Rules are commonly created by using methods from the Rules mixin, but may be parsed from string patterns.
Rule may sub-classed to create your own custom rules.
- debug
virtual Bool debug := true
Disable debugging of this rule if it gets too noisy.
- debugOff
This debugOff()
A helpful builder method for turning debug off.
In PEG grammar, rules are excluded from debug by add a hyphen suffix to the declaration.
noDebugRule- = foobar foobar
- definition
Str definition()
Returns the PEG definition for this rule. Example:
alphaNum <- [a-zA-Z0-9]
- excludeFromResults
This excludeFromResults()
A helpful builder method for removing this rule from tree results.
In PEG grammar, rules are excluded from results by add a hyphen prefix to the declaration.
-excludedRule = foobar foobar
- expression
Str expression()
Returns the PEG expression for this rule (with any label definition). Example:
label:[a-zA-Z0-9]
- label
virtual Str? label
A label for this rule.
someRule <- label:foobar foobar
Note the same rule definition may have multiple / different labels when used in different parts of PEG grammar.
Only rules with labels (or names) appear in debug output and the output tree, unless explicitly disabled.
Should be a legal Fantom identifier (think variable names!).
- match
Matches this rule against the given string.
See Peg.match
- name
virtual Str? name { internal set }
The name of this rule, as defined by grammar.
name <- foobar foobar
Only rules with names (or labels) appear in debug output and the output tree, unless explicitly disabled.
Should be a legal Fantom identifier (think variable names!).
- parseRule
static new parseRule(Str pattern)
- useInResult
virtual Bool useInResult := true
Not all rules are useful in the parsed AST.
- withLabel
A helpful builder method for setting the label.
someRule <- label:foobar foobar
Note the same rule definition may have multiple / different labels when used in different parts of PEG grammar.
Only rules with labels (or names) appear in debug output and the output tree.
Should be a legal Fantom identifier (think variable names!).