///|
pub fn rule(name : String) -> Rule {
{ name, expr: Atom }
}
///|
pub fn Rule::body(self : Rule, expr : Expr) -> Rule {
{ name: self.name, expr }
}
///|
pub fn body(rule : Rule, expr : Expr) -> Rule {
rule.body(expr)
}
///|
pub fn seqx(items : Array[Expr]) -> Expr {
Seqx(items)
}
///|
pub fn altx(items : Array[Expr]) -> Expr {
Altx(items)
}
///|
pub fn many(item : Expr) -> Expr {
Many(item)
}
///|
pub fn optx(item : Expr) -> Expr {
Optx(item)
}
///|
pub fn litx(text : String) -> Expr {
Litx(text)
}
///|
pub fn tokn(text : String) -> Expr {
Tokn(text)
}
///|
pub fn rgxx(text : String) -> Expr {
Rgxx(text)
}
///|
pub fn refx(text : String) -> Expr {
Refx(text)
}