pub enum Rule {
Labeled {
label: String,
rule: Box<Rule>,
},
Node(Node),
Token(Token),
Seq(Vec<Rule>),
Alt(Vec<Rule>),
Opt(Box<Rule>),
Rep(Box<Rule>),
}
Expand description
A production rule.
Variants
Labeled
A labeled rule, like a:B
("a"
is the label, B
is the rule).
Node(Node)
A node, like A
.
Token(Token)
A token, like 'struct'
.
Seq(Vec<Rule>)
A sequence of rules, like 'while' '(' Expr ')' Stmt
.
Alt(Vec<Rule>)
An alternative between many rules, like '+' | '-' | '*' | '/'
.
Opt(Box<Rule>)
An optional rule, like A?
.
Rep(Box<Rule>)
A repeated rule, like A*
.