Optional options: { Optional prefix?: stringProtected dataPrivate Readonly expanderPrivate Readonly resolvedRRPrivate Readonly resolvedRSGenerate the ELR parser.
Optional options: BuildOptionsDefinition syntax:
A | B means A or BA B means A then B'xxx' or "xxx" means literal string xxx'abc\'def'E.g.:
define({ exp: `A B | 'xxx' B` })
// means `A B` or `'xxx' B`, and reduce to `exp`
// equals to:
define({ exp: [`A B`, `'xxx' B`] })
Optional ctxBuilder: DefinitionContextBuilder<T>Declare top-level NT's.
Rest ...defs: string[]Private expandGenerate resolvers to make these definitions left-self-associative.
// 1 - 2 - 3 means (1 - 2) - 3 instead of 1 - (2 - 3)
builder.leftSA({ exp: `exp '-' exp` })
Rest ...defs: Parser.ELR.Definition[]Generate resolvers to implement grammar rules' priorities.
// gr1 > gr2 = gr3
builder.priority(gr1, [gr2, gr3])
Grammar rules with higher priority will always be reduced first, and grammar rules with the same priority will be reduced from left to right.
Rest ...defs: (Parser.ELR.Definition | Parser.ELR.Definition[])[]Resolve a reduce-reduce conflict.
Resolve a reduce-shift conflict.
Generate resolvers to make these definitions right-self-associative.
// a = b = 1 means a = (b = 1) instead of (a = b) = 1
builder.rightSA({ exp: `var '=' exp` })
Rest ...defs: Parser.ELR.Definition[]Apply a function to this builder.
Generated using TypeDoc
Builder for ELR parsers.
Use
entryto set entry NTs, usedefineto define grammar rules, usebuildto get parser.When build, it's recommended to set
checkAlltotruewhen developing.