diff --git a/cmd/treerack/check.go b/cmd/treerack/check.go new file mode 100644 index 0000000..1f80e09 --- /dev/null +++ b/cmd/treerack/check.go @@ -0,0 +1,54 @@ +package main + +import ( + "flag" + "io" +) + +type checkOptions struct { + syntaxOptions +} + +func flagSetCheck(o *checkOptions, output io.Writer) *flag.FlagSet { + fs := flag.NewFlagSet("", flag.ContinueOnError) + fs.Usage = func() {} + fs.SetOutput(output) + fs.StringVar(&o.syntax, "syntax-string", "", syntaxStringUsage) + fs.StringVar(&o.syntaxFile, "syntax", "", syntaxFileUsage) + return fs +} + +func flagErrorCheck(fs *flag.FlagSet) { + stderr() + stderr("Options:") + fs.PrintDefaults() +} + +func helpCheck() { + stdout(checkUsage) + stdout() + stdout("Options:") + fs := flagSetCheck(&checkOptions{}, wout) + fs.PrintDefaults() + stdout() + stdout(checkExample) + stdout() + stdout(docRef) +} + +func check(args []string) int { + if len(args) > 0 && args[0] == "-help" { + helpCheck() + return 0 + } + + var options checkOptions + fs := flagSetCheck(&options, werr) + if err := fs.Parse(args); err != nil { + flagErrorCheck(fs) + return -1 + } + + _, code := open(options.syntaxOptions, fs) + return code +} diff --git a/cmd/treerack/check_test.go b/cmd/treerack/check_test.go new file mode 100644 index 0000000..4a9a774 --- /dev/null +++ b/cmd/treerack/check_test.go @@ -0,0 +1,103 @@ +package main + +import "testing" + +func TestCheck(t *testing.T) { + runMainTest(t, + mainTest{ + title: "help", + args: []string{ + "treerack", "check", "-help", + }, + stdout: []string{ + checkUsage, + "-syntax", + "-syntax-string", + checkExample, + docRef, + }, + }, + + mainTest{ + title: "invalid flag", + args: []string{ + "treerack", "check", "-foo", + }, + exit: -1, + stderr: []string{ + "-syntax", + "-syntax-string", + }, + }, + + mainTest{ + title: "multiple inputs", + args: []string{ + "treerack", "check", "-syntax", "foo.treerack", "-syntax-string", `foo = "bar"`, + }, + exit: -1, + stderr: []string{ + "only one", + "-syntax", + "-syntax-string", + }, + }, + + mainTest{ + title: "no input", + args: []string{ + "treerack", "check", + }, + exit: -1, + stderr: []string{ + "missing syntax input", + "-syntax", + "-syntax-string", + }, + }, + + mainTest{ + title: "invalid input", + args: []string{ + "treerack", "check", "-syntax-string", "foo", + }, + exit: -1, + stderr: []string{ + "parse failed", + }, + }, + + mainTest{ + title: "file open fails", + args: []string{ + "treerack", "check", "-syntax", "noexist.treerack", + }, + exit: -1, + stderr: []string{ + "file", + }, + }, + + mainTest{ + title: "syntax as stdin", + args: []string{ + "treerack", "check", + }, + stdin: `foo = "bar"`, + }, + + mainTest{ + title: "syntax as file", + args: []string{ + "treerack", "generate", "-syntax", "foo_test.treerack", + }, + }, + + mainTest{ + title: "syntax as string", + args: []string{ + "treerack", "generate", "-syntax-string", `foo = "bar"`, + }, + }, + ) +} diff --git a/cmd/treerack/doc.go b/cmd/treerack/doc.go index 1a778c4..1dd9ce3 100644 --- a/cmd/treerack/doc.go +++ b/cmd/treerack/doc.go @@ -23,3 +23,8 @@ const generateUsage = `treerack generate takes a syntax description from the sta const generateExample = `Example: treerack generate -syntax syntax.treerack > parser.go` + +const checkUsage = `treerack check takes a syntax description from the standard input, or a file, or inline string, and validates it to check whether it represents a valid syntax. It returns with non-zero exit code and prints the problem if the syntax is not valid.` + +const checkExample = `Example: +treerack check -syntax syntax.treerack` diff --git a/cmd/treerack/generate.go b/cmd/treerack/generate.go index 52e8a42..34365ad 100644 --- a/cmd/treerack/generate.go +++ b/cmd/treerack/generate.go @@ -1,24 +1,19 @@ package main import ( - "bytes" "flag" "io" - "os" "github.com/aryszka/treerack" - - "golang.org/x/crypto/ssh/terminal" ) type generateOptions struct { - syntax string - syntaxFile string + syntaxOptions packageName string export bool } -func flagSet(o *generateOptions, output io.Writer) *flag.FlagSet { +func flagSetGenerate(o *generateOptions, output io.Writer) *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) fs.Usage = func() {} fs.SetOutput(output) @@ -29,11 +24,17 @@ func flagSet(o *generateOptions, output io.Writer) *flag.FlagSet { return fs } +func flagErrorGenerate(fs *flag.FlagSet) { + stderr() + stderr("Options:") + fs.PrintDefaults() +} + func helpGenerate() { stdout(generateUsage) stdout() stdout("Options:") - fs := flagSet(&generateOptions{}, wout) + fs := flagSetGenerate(&generateOptions{}, wout) fs.PrintDefaults() stdout() stdout(generateExample) @@ -41,26 +42,6 @@ func helpGenerate() { stdout(docRef) } -func flagError(fs *flag.FlagSet) { - stderr() - stderr("Options:") - fs.PrintDefaults() -} - -func multipleInputsError(fs *flag.FlagSet) { - stderr("only one of syntax file or syntax string is allowed") - stderr() - stderr("Options:") - fs.PrintDefaults() -} - -func noInputError(fs *flag.FlagSet) { - stderr("missing syntax input") - stderr() - stderr("Options:") - fs.PrintDefaults() -} - func generate(args []string) int { if len(args) > 0 && args[0] == "-help" { helpGenerate() @@ -68,47 +49,15 @@ func generate(args []string) int { } var options generateOptions - fs := flagSet(&options, werr) + fs := flagSetGenerate(&options, werr) if err := fs.Parse(args); err != nil { - flagError(fs) + flagErrorGenerate(fs) return -1 } - if options.syntaxFile != "" && options.syntax != "" { - multipleInputsError(fs) - return -1 - } - - var hasInput bool - if options.syntaxFile == "" && options.syntax == "" { - hasInput = isTest && rin != nil || !isTest && !terminal.IsTerminal(0) - } - - if !hasInput && options.syntaxFile == "" && options.syntax == "" { - noInputError(fs) - return -1 - } - - var input io.Reader - if hasInput { - input = rin - } else if options.syntaxFile != "" { - f, err := os.Open(options.syntaxFile) - if err != nil { - stderr(err) - return -1 - } - - defer f.Close() - input = f - } else if options.syntax != "" { - input = bytes.NewBufferString(options.syntax) - } - - s := &treerack.Syntax{} - if err := s.ReadSyntax(input); err != nil { - stderr(err) - return -1 + s, code := open(options.syntaxOptions, fs) + if code != 0 { + return code } var goptions treerack.GeneratorOptions diff --git a/cmd/treerack/main.go b/cmd/treerack/main.go index 842fcf9..99cb8bb 100644 --- a/cmd/treerack/main.go +++ b/cmd/treerack/main.go @@ -22,6 +22,9 @@ func main() { } switch os.Args[1] { + case "check": + code := check(os.Args[2:]) + exit(code) case "generate": code := generate(os.Args[2:]) exit(code) diff --git a/cmd/treerack/main_test.go b/cmd/treerack/main_test.go index 8fca393..f727fd0 100644 --- a/cmd/treerack/main_test.go +++ b/cmd/treerack/main_test.go @@ -123,20 +123,30 @@ func (mt mainTest) run(t *testing.T) { } if stdout != nil { + var failed bool for i := range mt.stdout { if !strings.Contains(stdout.String(), mt.stdout[i]) { t.Error("invalid output") - t.Log(stdout.String()) + failed = true } } + + if failed { + t.Log(stdout.String()) + } } + var failed bool for i := range mt.stderr { if !strings.Contains(stderr.String(), mt.stderr[i]) { t.Error("invalid error output") - t.Log(stderr.String()) + failed = true } } + + if failed { + t.Log(stderr.String()) + } } if mt.title == "" { diff --git a/cmd/treerack/open.go b/cmd/treerack/open.go new file mode 100644 index 0000000..0b5ad58 --- /dev/null +++ b/cmd/treerack/open.go @@ -0,0 +1,71 @@ +package main + +import ( + "bytes" + "flag" + "io" + "os" + + "github.com/aryszka/treerack" + "golang.org/x/crypto/ssh/terminal" +) + +type syntaxOptions struct { + syntax string + syntaxFile string +} + +func multipleSyntaxesError(fs *flag.FlagSet) { + stderr("only one of syntax file or syntax string is allowed") + stderr() + stderr("Options:") + fs.PrintDefaults() +} + +func missingSyntaxError(fs *flag.FlagSet) { + stderr("missing syntax input") + stderr() + stderr("Options:") + fs.PrintDefaults() +} + +func open(options syntaxOptions, fs *flag.FlagSet) (*treerack.Syntax, int) { + if options.syntaxFile != "" && options.syntax != "" { + multipleSyntaxesError(fs) + return nil, -1 + } + + var hasInput bool + if options.syntaxFile == "" && options.syntax == "" { + hasInput = isTest && rin != nil || !isTest && !terminal.IsTerminal(0) + } + + if !hasInput && options.syntaxFile == "" && options.syntax == "" { + missingSyntaxError(fs) + return nil, -1 + } + + var input io.Reader + if hasInput { + input = rin + } else if options.syntaxFile != "" { + f, err := os.Open(options.syntaxFile) + if err != nil { + stderr(err) + return nil, -1 + } + + defer f.Close() + input = f + } else if options.syntax != "" { + input = bytes.NewBufferString(options.syntax) + } + + s := &treerack.Syntax{} + if err := s.ReadSyntax(input); err != nil { + stderr(err) + return nil, -1 + } + + return s, 0 +} diff --git a/notes.txt b/notes.txt index 21b8579..de0d1f9 100644 --- a/notes.txt +++ b/notes.txt @@ -9,6 +9,8 @@ read, with error reporting what was the bug with the large json from eskip? [next] +check +parse error reports - take the last simplify generator output diff --git a/self/self.go b/self/self.go index 882ca2c..98bb37b 100644 --- a/self/self.go +++ b/self/self.go @@ -741,598 +741,598 @@ func Parse(r io.Reader) (*Node, error) { var p188 = sequenceParser{id: 188, commit: 32, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} var p186 = choiceParser{id: 186, commit: 2} var p185 = choiceParser{id: 185, commit: 70, name: "wsc", generalizations: []int{186}} - var p129 = choiceParser{id: 129, commit: 66, name: "wschar", generalizations: []int{185, 186}} - var p91 = sequenceParser{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p160 = charParser{id: 160, chars: []rune{32}} - p91.items = []parser{&p160} - var p45 = sequenceParser{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p55 = charParser{id: 55, chars: []rune{9}} - p45.items = []parser{&p55} - var p166 = sequenceParser{id: 166, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p16 = charParser{id: 16, chars: []rune{10}} - p166.items = []parser{&p16} - var p152 = sequenceParser{id: 152, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p133 = charParser{id: 133, chars: []rune{8}} - p152.items = []parser{&p133} - var p20 = sequenceParser{id: 20, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p174 = charParser{id: 174, chars: []rune{12}} - p20.items = []parser{&p174} - var p71 = sequenceParser{id: 71, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p23 = charParser{id: 23, chars: []rune{13}} - p71.items = []parser{&p23} - var p137 = sequenceParser{id: 137, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{129, 185, 186}} - var p92 = charParser{id: 92, chars: []rune{11}} - p137.items = []parser{&p92} - p129.options = []parser{&p91, &p45, &p166, &p152, &p20, &p71, &p137} - var p66 = sequenceParser{id: 66, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{185, 186}} - var p39 = choiceParser{id: 39, commit: 74, name: "comment-segment"} - var p161 = sequenceParser{id: 161, commit: 74, name: "line-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{39}} - var p107 = sequenceParser{id: 107, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var p179 = charParser{id: 179, chars: []rune{47}} - var p118 = charParser{id: 118, chars: []rune{47}} - p107.items = []parser{&p179, &p118} - var p110 = sequenceParser{id: 110, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p123 = charParser{id: 123, not: true, chars: []rune{10}} - p110.items = []parser{&p123} - p161.items = []parser{&p107, &p110} - var p24 = sequenceParser{id: 24, commit: 74, name: "block-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{39}} + var p112 = choiceParser{id: 112, commit: 66, name: "wschar", generalizations: []int{185, 186}} + var p137 = sequenceParser{id: 137, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p182 = charParser{id: 182, chars: []rune{32}} + p137.items = []parser{&p182} + var p164 = sequenceParser{id: 164, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p10 = charParser{id: 10, chars: []rune{9}} + p164.items = []parser{&p10} + var p11 = sequenceParser{id: 11, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p21 = charParser{id: 21, chars: []rune{10}} + p11.items = []parser{&p21} + var p45 = sequenceParser{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p159 = charParser{id: 159, chars: []rune{8}} + p45.items = []parser{&p159} + var p25 = sequenceParser{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p66 = charParser{id: 66, chars: []rune{12}} + p25.items = []parser{&p66} + var p67 = sequenceParser{id: 67, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p12 = charParser{id: 12, chars: []rune{13}} + p67.items = []parser{&p12} + var p117 = sequenceParser{id: 117, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{112, 185, 186}} + var p22 = charParser{id: 22, chars: []rune{11}} + p117.items = []parser{&p22} + p112.options = []parser{&p137, &p164, &p11, &p45, &p25, &p67, &p117} + var p18 = sequenceParser{id: 18, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{185, 186}} + var p34 = choiceParser{id: 34, commit: 74, name: "comment-segment"} + var p101 = sequenceParser{id: 101, commit: 74, name: "line-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{34}} var p17 = sequenceParser{id: 17, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var p21 = charParser{id: 21, chars: []rune{47}} - var p87 = charParser{id: 87, chars: []rune{42}} - p17.items = []parser{&p21, &p87} - var p142 = choiceParser{id: 142, commit: 10} - var p56 = sequenceParser{id: 56, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{142}} - var p46 = sequenceParser{id: 46, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p98 = charParser{id: 98, chars: []rune{42}} - p46.items = []parser{&p98} - var p106 = sequenceParser{id: 106, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p167 = charParser{id: 167, not: true, chars: []rune{47}} - p106.items = []parser{&p167} - p56.items = []parser{&p46, &p106} - var p184 = sequenceParser{id: 184, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{142}} - var p7 = charParser{id: 7, not: true, chars: []rune{42}} - p184.items = []parser{&p7} - p142.options = []parser{&p56, &p184} - var p10 = sequenceParser{id: 10, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var p162 = charParser{id: 162, chars: []rune{42}} - var p138 = charParser{id: 138, chars: []rune{47}} - p10.items = []parser{&p162, &p138} - p24.items = []parser{&p17, &p142, &p10} - p39.options = []parser{&p161, &p24} - var p8 = sequenceParser{id: 8, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} - var p101 = choiceParser{id: 101, commit: 74, name: "ws-no-nl"} - var p76 = sequenceParser{id: 76, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p119 = charParser{id: 119, chars: []rune{32}} - p76.items = []parser{&p119} - var p180 = sequenceParser{id: 180, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p154 = charParser{id: 154, chars: []rune{9}} - p180.items = []parser{&p154} - var p177 = sequenceParser{id: 177, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p130 = charParser{id: 130, chars: []rune{8}} - p177.items = []parser{&p130} - var p40 = sequenceParser{id: 40, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p175 = charParser{id: 175, chars: []rune{12}} - p40.items = []parser{&p175} - var p99 = sequenceParser{id: 99, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p100 = charParser{id: 100, chars: []rune{13}} - p99.items = []parser{&p100} - var p28 = sequenceParser{id: 28, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{101}} - var p41 = charParser{id: 41, chars: []rune{11}} - p28.items = []parser{&p41} - p101.options = []parser{&p76, &p180, &p177, &p40, &p99, &p28} - var p181 = sequenceParser{id: 181, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p65 = charParser{id: 65, chars: []rune{10}} - p181.items = []parser{&p65} - p8.items = []parser{&p101, &p181, &p101, &p39} - p66.items = []parser{&p39, &p8} - p185.options = []parser{&p129, &p66} + var p118 = charParser{id: 118, chars: []rune{47}} + var p6 = charParser{id: 6, chars: []rune{47}} + p17.items = []parser{&p118, &p6} + var p119 = sequenceParser{id: 119, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p165 = charParser{id: 165, not: true, chars: []rune{10}} + p119.items = []parser{&p165} + p101.items = []parser{&p17, &p119} + var p68 = sequenceParser{id: 68, commit: 74, name: "block-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{34}} + var p16 = sequenceParser{id: 16, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var p148 = charParser{id: 148, chars: []rune{47}} + var p46 = charParser{id: 46, chars: []rune{42}} + p16.items = []parser{&p148, &p46} + var p23 = choiceParser{id: 23, commit: 10} + var p129 = sequenceParser{id: 129, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{23}} + var p56 = sequenceParser{id: 56, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p100 = charParser{id: 100, chars: []rune{42}} + p56.items = []parser{&p100} + var p5 = sequenceParser{id: 5, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p47 = charParser{id: 47, not: true, chars: []rune{47}} + p5.items = []parser{&p47} + p129.items = []parser{&p56, &p5} + var p125 = sequenceParser{id: 125, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{23}} + var p183 = charParser{id: 183, not: true, chars: []rune{42}} + p125.items = []parser{&p183} + p23.options = []parser{&p129, &p125} + var p121 = sequenceParser{id: 121, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var p57 = charParser{id: 57, chars: []rune{42}} + var p92 = charParser{id: 92, chars: []rune{47}} + p121.items = []parser{&p57, &p92} + p68.items = []parser{&p16, &p23, &p121} + p34.options = []parser{&p101, &p68} + var p41 = sequenceParser{id: 41, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} + var p87 = choiceParser{id: 87, commit: 74, name: "ws-no-nl"} + var p102 = sequenceParser{id: 102, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p149 = charParser{id: 149, chars: []rune{32}} + p102.items = []parser{&p149} + var p76 = sequenceParser{id: 76, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p138 = charParser{id: 138, chars: []rune{9}} + p76.items = []parser{&p138} + var p40 = sequenceParser{id: 40, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p61 = charParser{id: 61, chars: []rune{8}} + p40.items = []parser{&p61} + var p95 = sequenceParser{id: 95, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p150 = charParser{id: 150, chars: []rune{12}} + p95.items = []parser{&p150} + var p62 = sequenceParser{id: 62, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p93 = charParser{id: 93, chars: []rune{13}} + p62.items = []parser{&p93} + var p107 = sequenceParser{id: 107, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{87}} + var p19 = charParser{id: 19, chars: []rune{11}} + p107.items = []parser{&p19} + p87.options = []parser{&p102, &p76, &p40, &p95, &p62, &p107} + var p169 = sequenceParser{id: 169, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p143 = charParser{id: 143, chars: []rune{10}} + p169.items = []parser{&p143} + p41.items = []parser{&p87, &p169, &p87, &p34} + p18.items = []parser{&p34, &p41} + p185.options = []parser{&p112, &p18} p186.options = []parser{&p185} var p187 = sequenceParser{id: 187, commit: 66, name: "syntax:wsroot", ranges: [][]int{{0, 1}, {0, -1}, {0, 1}, {0, 1}}} - var p82 = sequenceParser{id: 82, commit: 2, ranges: [][]int{{1, 1}, {0, -1}}} - var p173 = sequenceParser{id: 173, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p172 = charParser{id: 172, chars: []rune{59}} - p173.items = []parser{&p172} - var p81 = sequenceParser{id: 81, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p81.items = []parser{&p186, &p173} - p82.items = []parser{&p173, &p81} - var p64 = sequenceParser{id: 64, commit: 66, name: "definitions", ranges: [][]int{{1, 1}, {0, 1}}} - var p131 = sequenceParser{id: 131, commit: 64, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} - var p159 = sequenceParser{id: 159, commit: 74, name: "definition-name", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var p44 = sequenceParser{id: 44, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{136, 29, 59}} - var p103 = sequenceParser{id: 103, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p78 = charParser{id: 78, not: true, chars: []rune{92, 32, 10, 9, 8, 12, 13, 11, 47, 46, 91, 93, 34, 123, 125, 94, 43, 42, 63, 124, 40, 41, 58, 61, 59}} - p103.items = []parser{&p78} - p44.items = []parser{&p103} - var p165 = sequenceParser{id: 165, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var p94 = sequenceParser{id: 94, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p141 = charParser{id: 141, chars: []rune{58}} - p94.items = []parser{&p141} - var p27 = choiceParser{id: 27, commit: 66, name: "flag"} - var p158 = sequenceParser{id: 158, commit: 72, name: "alias", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{27}} - var p176 = charParser{id: 176, chars: []rune{97}} - var p145 = charParser{id: 145, chars: []rune{108}} - var p60 = charParser{id: 60, chars: []rune{105}} - var p163 = charParser{id: 163, chars: []rune{97}} - var p5 = charParser{id: 5, chars: []rune{115}} - p158.items = []parser{&p176, &p145, &p60, &p163, &p5} - var p75 = sequenceParser{id: 75, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{27}} - var p151 = charParser{id: 151, chars: []rune{119}} - var p74 = charParser{id: 74, chars: []rune{115}} - p75.items = []parser{&p151, &p74} - var p121 = sequenceParser{id: 121, commit: 72, name: "nows", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{27}} - var p111 = charParser{id: 111, chars: []rune{110}} - var p54 = charParser{id: 54, chars: []rune{111}} - var p68 = charParser{id: 68, chars: []rune{119}} - var p127 = charParser{id: 127, chars: []rune{115}} - p121.items = []parser{&p111, &p54, &p68, &p127} - var p36 = sequenceParser{id: 36, commit: 72, name: "failpass", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{27}} - var p6 = charParser{id: 6, chars: []rune{102}} - var p171 = charParser{id: 171, chars: []rune{97}} - var p108 = charParser{id: 108, chars: []rune{105}} - var p32 = charParser{id: 32, chars: []rune{108}} - var p61 = charParser{id: 61, chars: []rune{112}} - var p69 = charParser{id: 69, chars: []rune{97}} - var p49 = charParser{id: 49, chars: []rune{115}} - var p164 = charParser{id: 164, chars: []rune{115}} - p36.items = []parser{&p6, &p171, &p108, &p32, &p61, &p69, &p49, &p164} - var p109 = sequenceParser{id: 109, commit: 72, name: "root", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{27}} - var p128 = charParser{id: 128, chars: []rune{114}} - var p9 = charParser{id: 9, chars: []rune{111}} - var p183 = charParser{id: 183, chars: []rune{111}} - var p47 = charParser{id: 47, chars: []rune{116}} - p109.items = []parser{&p128, &p9, &p183, &p47} - p27.options = []parser{&p158, &p75, &p121, &p36, &p109} - p165.items = []parser{&p94, &p27} - p159.items = []parser{&p44, &p165} - var p122 = sequenceParser{id: 122, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p80 = charParser{id: 80, chars: []rune{61}} - p122.items = []parser{&p80} - var p136 = choiceParser{id: 136, commit: 66, name: "expression"} - var p2 = choiceParser{id: 2, commit: 66, name: "terminal", generalizations: []int{136, 29, 59}} - var p168 = sequenceParser{id: 168, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{2, 136, 29, 59}} - var p125 = charParser{id: 125, chars: []rune{46}} - p168.items = []parser{&p125} - var p13 = sequenceParser{id: 13, commit: 72, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{2, 136, 29, 59}} - var p134 = sequenceParser{id: 134, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p148 = charParser{id: 148, chars: []rune{91}} - p134.items = []parser{&p148} - var p153 = sequenceParser{id: 153, commit: 72, name: "class-not", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p42 = charParser{id: 42, chars: []rune{94}} - p153.items = []parser{&p42} - var p77 = choiceParser{id: 77, commit: 10} - var p155 = choiceParser{id: 155, commit: 72, name: "class-char", generalizations: []int{77}} - var p85 = sequenceParser{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{155, 77}} - var p135 = charParser{id: 135, not: true, chars: []rune{92, 91, 93, 94, 45}} - p85.items = []parser{&p135} - var p169 = sequenceParser{id: 169, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{155, 77}} - var p12 = sequenceParser{id: 12, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p11 = charParser{id: 11, chars: []rune{92}} - p12.items = []parser{&p11} - var p146 = sequenceParser{id: 146, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p31 = charParser{id: 31, not: true} - p146.items = []parser{&p31} - p169.items = []parser{&p12, &p146} - p155.options = []parser{&p85, &p169} - var p72 = sequenceParser{id: 72, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{77}} - var p50 = sequenceParser{id: 50, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p178 = charParser{id: 178, chars: []rune{45}} - p50.items = []parser{&p178} - p72.items = []parser{&p155, &p50, &p155} - p77.options = []parser{&p155, &p72} - var p52 = sequenceParser{id: 52, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p37 = charParser{id: 37, chars: []rune{93}} - p52.items = []parser{&p37} - p13.items = []parser{&p134, &p153, &p77, &p52} - var p38 = sequenceParser{id: 38, commit: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{2, 136, 29, 59}} - var p51 = sequenceParser{id: 51, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p86 = charParser{id: 86, chars: []rune{34}} - p51.items = []parser{&p86} - var p126 = choiceParser{id: 126, commit: 72, name: "sequence-char"} - var p88 = sequenceParser{id: 88, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{126}} - var p1 = charParser{id: 1, not: true, chars: []rune{92, 34}} - p88.items = []parser{&p1} - var p102 = sequenceParser{id: 102, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{126}} - var p67 = sequenceParser{id: 67, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p143 = charParser{id: 143, chars: []rune{92}} - p67.items = []parser{&p143} + var p31 = sequenceParser{id: 31, commit: 2, ranges: [][]int{{1, 1}, {0, -1}}} + var p174 = sequenceParser{id: 174, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p9 = charParser{id: 9, chars: []rune{59}} + p174.items = []parser{&p9} + var p30 = sequenceParser{id: 30, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p30.items = []parser{&p186, &p174} + p31.items = []parser{&p174, &p30} + var p142 = sequenceParser{id: 142, commit: 66, name: "definitions", ranges: [][]int{{1, 1}, {0, 1}}} + var p173 = sequenceParser{id: 173, commit: 64, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var p71 = sequenceParser{id: 71, commit: 74, name: "definition-name", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var p28 = sequenceParser{id: 28, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{162, 44, 184}} + var p177 = sequenceParser{id: 177, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p79 = charParser{id: 79, not: true, chars: []rune{92, 32, 10, 9, 8, 12, 13, 11, 47, 46, 91, 93, 34, 123, 125, 94, 43, 42, 63, 124, 40, 41, 58, 61, 59}} + p177.items = []parser{&p79} + p28.items = []parser{&p177} + var p86 = sequenceParser{id: 86, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var p85 = sequenceParser{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p152 = charParser{id: 152, chars: []rune{58}} + p85.items = []parser{&p152} + var p151 = choiceParser{id: 151, commit: 66, name: "flag"} + var p50 = sequenceParser{id: 50, commit: 72, name: "alias", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{151}} + var p81 = charParser{id: 81, chars: []rune{97}} + var p14 = charParser{id: 14, chars: []rune{108}} + var p97 = charParser{id: 97, chars: []rune{105}} + var p35 = charParser{id: 35, chars: []rune{97}} + var p171 = charParser{id: 171, chars: []rune{115}} + p50.items = []parser{&p81, &p14, &p97, &p35, &p171} + var p69 = sequenceParser{id: 69, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{151}} + var p116 = charParser{id: 116, chars: []rune{119}} + var p98 = charParser{id: 98, chars: []rune{115}} + p69.items = []parser{&p116, &p98} + var p84 = sequenceParser{id: 84, commit: 72, name: "nows", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{151}} + var p99 = charParser{id: 99, chars: []rune{110}} + var p90 = charParser{id: 90, chars: []rune{111}} + var p106 = charParser{id: 106, chars: []rune{119}} + var p126 = charParser{id: 126, chars: []rune{115}} + p84.items = []parser{&p99, &p90, &p106, &p126} + var p172 = sequenceParser{id: 172, commit: 72, name: "failpass", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{151}} + var p180 = charParser{id: 180, chars: []rune{102}} + var p135 = charParser{id: 135, chars: []rune{97}} + var p163 = charParser{id: 163, chars: []rune{105}} + var p15 = charParser{id: 15, chars: []rune{108}} + var p127 = charParser{id: 127, chars: []rune{112}} + var p70 = charParser{id: 70, chars: []rune{97}} + var p60 = charParser{id: 60, chars: []rune{115}} + var p167 = charParser{id: 167, chars: []rune{115}} + p172.items = []parser{&p180, &p135, &p163, &p15, &p127, &p70, &p60, &p167} + var p36 = sequenceParser{id: 36, commit: 72, name: "root", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{151}} + var p147 = charParser{id: 147, chars: []rune{114}} + var p128 = charParser{id: 128, chars: []rune{111}} + var p103 = charParser{id: 103, chars: []rune{111}} + var p136 = charParser{id: 136, chars: []rune{116}} + p36.items = []parser{&p147, &p128, &p103, &p136} + p151.options = []parser{&p50, &p69, &p84, &p172, &p36} + p86.items = []parser{&p85, &p151} + p71.items = []parser{&p28, &p86} + var p181 = sequenceParser{id: 181, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p104 = charParser{id: 104, chars: []rune{61}} + p181.items = []parser{&p104} + var p162 = choiceParser{id: 162, commit: 66, name: "expression"} + var p130 = choiceParser{id: 130, commit: 66, name: "terminal", generalizations: []int{162, 44, 184}} + var p58 = sequenceParser{id: 58, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{130, 162, 44, 184}} + var p113 = charParser{id: 113, chars: []rune{46}} + p58.items = []parser{&p113} + var p114 = sequenceParser{id: 114, commit: 72, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{130, 162, 44, 184}} var p73 = sequenceParser{id: 73, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p43 = charParser{id: 43, not: true} - p73.items = []parser{&p43} - p102.items = []parser{&p67, &p73} - p126.options = []parser{&p88, &p102} - var p149 = sequenceParser{id: 149, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p22 = charParser{id: 22, chars: []rune{34}} - p149.items = []parser{&p22} - p38.items = []parser{&p51, &p126, &p149} - p2.options = []parser{&p168, &p13, &p38} - var p14 = sequenceParser{id: 14, commit: 66, name: "group", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{136, 29, 59}} - var p79 = sequenceParser{id: 79, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p57 = charParser{id: 57, chars: []rune{40}} - p79.items = []parser{&p57} - var p3 = sequenceParser{id: 3, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p124 = charParser{id: 124, chars: []rune{41}} - p3.items = []parser{&p124} - p14.items = []parser{&p79, &p186, &p136, &p186, &p3} - var p26 = sequenceParser{id: 26, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{136, 59}} - var p4 = sequenceParser{id: 4, commit: 72, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}} - var p29 = choiceParser{id: 29, commit: 10} - p29.options = []parser{&p2, &p44, &p14} - var p53 = choiceParser{id: 53, commit: 66, name: "quantity"} - var p113 = sequenceParser{id: 113, commit: 64, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{53}} - var p182 = sequenceParser{id: 182, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p104 = charParser{id: 104, chars: []rune{123}} - p182.items = []parser{&p104} - var p89 = sequenceParser{id: 89, commit: 64, name: "count", ranges: [][]int{{1, 1}}} - var p112 = sequenceParser{id: 112, commit: 74, name: "number", ranges: [][]int{{1, -1}, {1, -1}}} - var p150 = sequenceParser{id: 150, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p15 = charParser{id: 15, ranges: [][]rune{{48, 57}}} - p150.items = []parser{&p15} - p112.items = []parser{&p150} - p89.items = []parser{&p112} - var p18 = sequenceParser{id: 18, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p120 = charParser{id: 120, chars: []rune{125}} - p18.items = []parser{&p120} - p113.items = []parser{&p182, &p186, &p89, &p186, &p18} - var p58 = sequenceParser{id: 58, commit: 64, name: "range-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{53}} - var p170 = sequenceParser{id: 170, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p95 = charParser{id: 95, chars: []rune{123}} - p170.items = []parser{&p95} - var p90 = sequenceParser{id: 90, commit: 64, name: "range-from", ranges: [][]int{{1, 1}}} - p90.items = []parser{&p112} + var p160 = charParser{id: 160, chars: []rune{91}} + p73.items = []parser{&p160} + var p175 = sequenceParser{id: 175, commit: 72, name: "class-not", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p108 = charParser{id: 108, chars: []rune{94}} + p175.items = []parser{&p108} + var p48 = choiceParser{id: 48, commit: 10} + var p37 = choiceParser{id: 37, commit: 72, name: "class-char", generalizations: []int{48}} + var p176 = sequenceParser{id: 176, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{37, 48}} + var p88 = charParser{id: 88, not: true, chars: []rune{92, 91, 93, 94, 45}} + p176.items = []parser{&p88} + var p89 = sequenceParser{id: 89, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{37, 48}} + var p42 = sequenceParser{id: 42, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p7 = charParser{id: 7, chars: []rune{92}} + p42.items = []parser{&p7} var p139 = sequenceParser{id: 139, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p33 = charParser{id: 33, chars: []rune{44}} - p139.items = []parser{&p33} - var p156 = sequenceParser{id: 156, commit: 64, name: "range-to", ranges: [][]int{{1, 1}}} - p156.items = []parser{&p112} - var p48 = sequenceParser{id: 48, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p114 = charParser{id: 114, chars: []rune{125}} - p48.items = []parser{&p114} - p58.items = []parser{&p170, &p186, &p90, &p186, &p139, &p186, &p156, &p186, &p48} - var p115 = sequenceParser{id: 115, commit: 72, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{53}} - var p105 = charParser{id: 105, chars: []rune{43}} - p115.items = []parser{&p105} - var p147 = sequenceParser{id: 147, commit: 72, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{53}} - var p140 = charParser{id: 140, chars: []rune{42}} - p147.items = []parser{&p140} - var p34 = sequenceParser{id: 34, commit: 72, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{53}} - var p157 = charParser{id: 157, chars: []rune{63}} - p34.items = []parser{&p157} - p53.options = []parser{&p113, &p58, &p115, &p147, &p34} - p4.items = []parser{&p29, &p53} - var p25 = sequenceParser{id: 25, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p25.items = []parser{&p186, &p4} - p26.items = []parser{&p4, &p25} - var p117 = sequenceParser{id: 117, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{136}} - var p59 = choiceParser{id: 59, commit: 66, name: "option"} - p59.options = []parser{&p2, &p44, &p14, &p26} - var p93 = sequenceParser{id: 93, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}} - var p35 = sequenceParser{id: 35, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p144 = charParser{id: 144, chars: []rune{124}} - p35.items = []parser{&p144} - p93.items = []parser{&p35, &p186, &p59} - var p116 = sequenceParser{id: 116, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p116.items = []parser{&p186, &p93} - p117.items = []parser{&p59, &p186, &p93, &p116} - p136.options = []parser{&p2, &p44, &p14, &p26, &p117} - p131.items = []parser{&p159, &p186, &p122, &p186, &p136} - var p63 = sequenceParser{id: 63, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} - var p97 = sequenceParser{id: 97, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}} - var p70 = sequenceParser{id: 70, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p132 = charParser{id: 132, chars: []rune{59}} - p70.items = []parser{&p132} - var p96 = sequenceParser{id: 96, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p96.items = []parser{&p186, &p70} - p97.items = []parser{&p70, &p96, &p186, &p131} - var p62 = sequenceParser{id: 62, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p62.items = []parser{&p186, &p97} - p63.items = []parser{&p186, &p97, &p62} - p64.items = []parser{&p131, &p63} - var p84 = sequenceParser{id: 84, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} - var p30 = sequenceParser{id: 30, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var p19 = charParser{id: 19, chars: []rune{59}} - p30.items = []parser{&p19} - var p83 = sequenceParser{id: 83, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - p83.items = []parser{&p186, &p30} - p84.items = []parser{&p186, &p30, &p83} - p187.items = []parser{&p82, &p186, &p64, &p84} + var p144 = charParser{id: 144, not: true} + p139.items = []parser{&p144} + p89.items = []parser{&p42, &p139} + p37.options = []parser{&p176, &p89} + var p82 = sequenceParser{id: 82, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{48}} + var p8 = sequenceParser{id: 8, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p145 = charParser{id: 145, chars: []rune{45}} + p8.items = []parser{&p145} + p82.items = []parser{&p37, &p8, &p37} + p48.options = []parser{&p37, &p82} + var p38 = sequenceParser{id: 38, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p51 = charParser{id: 51, chars: []rune{93}} + p38.items = []parser{&p51} + p114.items = []parser{&p73, &p175, &p48, &p38} + var p2 = sequenceParser{id: 2, commit: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{130, 162, 44, 184}} + var p1 = sequenceParser{id: 1, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p26 = charParser{id: 26, chars: []rune{34}} + p1.items = []parser{&p26} + var p96 = choiceParser{id: 96, commit: 72, name: "sequence-char"} + var p77 = sequenceParser{id: 77, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{96}} + var p20 = charParser{id: 20, not: true, chars: []rune{92, 34}} + p77.items = []parser{&p20} + var p75 = sequenceParser{id: 75, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{96}} + var p49 = sequenceParser{id: 49, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p74 = charParser{id: 74, chars: []rune{92}} + p49.items = []parser{&p74} + var p154 = sequenceParser{id: 154, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p132 = charParser{id: 132, not: true} + p154.items = []parser{&p132} + p75.items = []parser{&p49, &p154} + p96.options = []parser{&p77, &p75} + var p155 = sequenceParser{id: 155, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p94 = charParser{id: 94, chars: []rune{34}} + p155.items = []parser{&p94} + p2.items = []parser{&p1, &p96, &p155} + p130.options = []parser{&p58, &p114, &p2} + var p27 = sequenceParser{id: 27, commit: 66, name: "group", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{162, 44, 184}} + var p166 = sequenceParser{id: 166, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p110 = charParser{id: 110, chars: []rune{40}} + p166.items = []parser{&p110} + var p83 = sequenceParser{id: 83, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p52 = charParser{id: 52, chars: []rune{41}} + p83.items = []parser{&p52} + p27.items = []parser{&p166, &p186, &p162, &p186, &p83} + var p124 = sequenceParser{id: 124, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{162, 184}} + var p65 = sequenceParser{id: 65, commit: 72, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}} + var p44 = choiceParser{id: 44, commit: 10} + p44.options = []parser{&p130, &p28, &p27} + var p29 = choiceParser{id: 29, commit: 66, name: "quantity"} + var p161 = sequenceParser{id: 161, commit: 64, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{29}} + var p156 = sequenceParser{id: 156, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p170 = charParser{id: 170, chars: []rune{123}} + p156.items = []parser{&p170} + var p53 = sequenceParser{id: 53, commit: 64, name: "count", ranges: [][]int{{1, 1}}} + var p146 = sequenceParser{id: 146, commit: 74, name: "number", ranges: [][]int{{1, -1}, {1, -1}}} + var p63 = sequenceParser{id: 63, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p133 = charParser{id: 133, ranges: [][]rune{{48, 57}}} + p63.items = []parser{&p133} + p146.items = []parser{&p63} + p53.items = []parser{&p146} + var p39 = sequenceParser{id: 39, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p64 = charParser{id: 64, chars: []rune{125}} + p39.items = []parser{&p64} + p161.items = []parser{&p156, &p186, &p53, &p186, &p39} + var p122 = sequenceParser{id: 122, commit: 64, name: "range-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{29}} + var p13 = sequenceParser{id: 13, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p115 = charParser{id: 115, chars: []rune{123}} + p13.items = []parser{&p115} + var p80 = sequenceParser{id: 80, commit: 64, name: "range-from", ranges: [][]int{{1, 1}}} + p80.items = []parser{&p146} + var p55 = sequenceParser{id: 55, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p54 = charParser{id: 54, chars: []rune{44}} + p55.items = []parser{&p54} + var p43 = sequenceParser{id: 43, commit: 64, name: "range-to", ranges: [][]int{{1, 1}}} + p43.items = []parser{&p146} + var p78 = sequenceParser{id: 78, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p157 = charParser{id: 157, chars: []rune{125}} + p78.items = []parser{&p157} + p122.items = []parser{&p13, &p186, &p80, &p186, &p55, &p186, &p43, &p186, &p78} + var p109 = sequenceParser{id: 109, commit: 72, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{29}} + var p111 = charParser{id: 111, chars: []rune{43}} + p109.items = []parser{&p111} + var p105 = sequenceParser{id: 105, commit: 72, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{29}} + var p131 = charParser{id: 131, chars: []rune{42}} + p105.items = []parser{&p131} + var p72 = sequenceParser{id: 72, commit: 72, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{29}} + var p59 = charParser{id: 59, chars: []rune{63}} + p72.items = []parser{&p59} + p29.options = []parser{&p161, &p122, &p109, &p105, &p72} + p65.items = []parser{&p44, &p29} + var p123 = sequenceParser{id: 123, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p123.items = []parser{&p186, &p65} + p124.items = []parser{&p65, &p123} + var p179 = sequenceParser{id: 179, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{162}} + var p184 = choiceParser{id: 184, commit: 66, name: "option"} + p184.options = []parser{&p130, &p28, &p27, &p124} + var p158 = sequenceParser{id: 158, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}} + var p24 = sequenceParser{id: 24, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p134 = charParser{id: 134, chars: []rune{124}} + p24.items = []parser{&p134} + p158.items = []parser{&p24, &p186, &p184} + var p178 = sequenceParser{id: 178, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p178.items = []parser{&p186, &p158} + p179.items = []parser{&p184, &p186, &p158, &p178} + p162.options = []parser{&p130, &p28, &p27, &p124, &p179} + p173.items = []parser{&p71, &p186, &p181, &p186, &p162} + var p141 = sequenceParser{id: 141, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} + var p4 = sequenceParser{id: 4, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}} + var p91 = sequenceParser{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p153 = charParser{id: 153, chars: []rune{59}} + p91.items = []parser{&p153} + var p3 = sequenceParser{id: 3, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p3.items = []parser{&p186, &p91} + p4.items = []parser{&p91, &p3, &p186, &p173} + var p140 = sequenceParser{id: 140, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p140.items = []parser{&p186, &p4} + p141.items = []parser{&p186, &p4, &p140} + p142.items = []parser{&p173, &p141} + var p33 = sequenceParser{id: 33, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} + var p120 = sequenceParser{id: 120, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var p168 = charParser{id: 168, chars: []rune{59}} + p120.items = []parser{&p168} + var p32 = sequenceParser{id: 32, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + p32.items = []parser{&p186, &p120} + p33.items = []parser{&p186, &p120, &p32} + p187.items = []parser{&p31, &p186, &p142, &p33} p188.items = []parser{&p186, &p187, &p186} var b188 = sequenceBuilder{id: 188, commit: 32, name: "syntax", ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} var b186 = choiceBuilder{id: 186, commit: 2} var b185 = choiceBuilder{id: 185, commit: 70} - var b129 = choiceBuilder{id: 129, commit: 66} - var b91 = sequenceBuilder{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b160 = charBuilder{} - b91.items = []builder{&b160} - var b45 = sequenceBuilder{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b55 = charBuilder{} - b45.items = []builder{&b55} - var b166 = sequenceBuilder{id: 166, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b16 = charBuilder{} - b166.items = []builder{&b16} - var b152 = sequenceBuilder{id: 152, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b133 = charBuilder{} - b152.items = []builder{&b133} - var b20 = sequenceBuilder{id: 20, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b174 = charBuilder{} - b20.items = []builder{&b174} - var b71 = sequenceBuilder{id: 71, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b23 = charBuilder{} - b71.items = []builder{&b23} + var b112 = choiceBuilder{id: 112, commit: 66} var b137 = sequenceBuilder{id: 137, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b92 = charBuilder{} - b137.items = []builder{&b92} - b129.options = []builder{&b91, &b45, &b166, &b152, &b20, &b71, &b137} - var b66 = sequenceBuilder{id: 66, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var b39 = choiceBuilder{id: 39, commit: 74} - var b161 = sequenceBuilder{id: 161, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var b107 = sequenceBuilder{id: 107, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b179 = charBuilder{} - var b118 = charBuilder{} - b107.items = []builder{&b179, &b118} - var b110 = sequenceBuilder{id: 110, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b123 = charBuilder{} - b110.items = []builder{&b123} - b161.items = []builder{&b107, &b110} - var b24 = sequenceBuilder{id: 24, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} - var b17 = sequenceBuilder{id: 17, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b182 = charBuilder{} + b137.items = []builder{&b182} + var b164 = sequenceBuilder{id: 164, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b10 = charBuilder{} + b164.items = []builder{&b10} + var b11 = sequenceBuilder{id: 11, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b21 = charBuilder{} - var b87 = charBuilder{} - b17.items = []builder{&b21, &b87} - var b142 = choiceBuilder{id: 142, commit: 10} - var b56 = sequenceBuilder{id: 56, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b46 = sequenceBuilder{id: 46, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b98 = charBuilder{} - b46.items = []builder{&b98} - var b106 = sequenceBuilder{id: 106, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b167 = charBuilder{} - b106.items = []builder{&b167} - b56.items = []builder{&b46, &b106} - var b184 = sequenceBuilder{id: 184, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b7 = charBuilder{} - b184.items = []builder{&b7} - b142.options = []builder{&b56, &b184} - var b10 = sequenceBuilder{id: 10, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b162 = charBuilder{} - var b138 = charBuilder{} - b10.items = []builder{&b162, &b138} - b24.items = []builder{&b17, &b142, &b10} - b39.options = []builder{&b161, &b24} - var b8 = sequenceBuilder{id: 8, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} - var b101 = choiceBuilder{id: 101, commit: 74} - var b76 = sequenceBuilder{id: 76, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b119 = charBuilder{} - b76.items = []builder{&b119} - var b180 = sequenceBuilder{id: 180, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b154 = charBuilder{} - b180.items = []builder{&b154} - var b177 = sequenceBuilder{id: 177, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b130 = charBuilder{} - b177.items = []builder{&b130} - var b40 = sequenceBuilder{id: 40, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b175 = charBuilder{} - b40.items = []builder{&b175} - var b99 = sequenceBuilder{id: 99, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + b11.items = []builder{&b21} + var b45 = sequenceBuilder{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b159 = charBuilder{} + b45.items = []builder{&b159} + var b25 = sequenceBuilder{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b66 = charBuilder{} + b25.items = []builder{&b66} + var b67 = sequenceBuilder{id: 67, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b12 = charBuilder{} + b67.items = []builder{&b12} + var b117 = sequenceBuilder{id: 117, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b22 = charBuilder{} + b117.items = []builder{&b22} + b112.options = []builder{&b137, &b164, &b11, &b45, &b25, &b67, &b117} + var b18 = sequenceBuilder{id: 18, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b34 = choiceBuilder{id: 34, commit: 74} + var b101 = sequenceBuilder{id: 101, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b17 = sequenceBuilder{id: 17, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b118 = charBuilder{} + var b6 = charBuilder{} + b17.items = []builder{&b118, &b6} + var b119 = sequenceBuilder{id: 119, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b165 = charBuilder{} + b119.items = []builder{&b165} + b101.items = []builder{&b17, &b119} + var b68 = sequenceBuilder{id: 68, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} + var b16 = sequenceBuilder{id: 16, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b148 = charBuilder{} + var b46 = charBuilder{} + b16.items = []builder{&b148, &b46} + var b23 = choiceBuilder{id: 23, commit: 10} + var b129 = sequenceBuilder{id: 129, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b56 = sequenceBuilder{id: 56, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b100 = charBuilder{} - b99.items = []builder{&b100} - var b28 = sequenceBuilder{id: 28, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b41 = charBuilder{} - b28.items = []builder{&b41} - b101.options = []builder{&b76, &b180, &b177, &b40, &b99, &b28} - var b181 = sequenceBuilder{id: 181, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b65 = charBuilder{} - b181.items = []builder{&b65} - b8.items = []builder{&b101, &b181, &b101, &b39} - b66.items = []builder{&b39, &b8} - b185.options = []builder{&b129, &b66} + b56.items = []builder{&b100} + var b5 = sequenceBuilder{id: 5, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b47 = charBuilder{} + b5.items = []builder{&b47} + b129.items = []builder{&b56, &b5} + var b125 = sequenceBuilder{id: 125, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b183 = charBuilder{} + b125.items = []builder{&b183} + b23.options = []builder{&b129, &b125} + var b121 = sequenceBuilder{id: 121, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b57 = charBuilder{} + var b92 = charBuilder{} + b121.items = []builder{&b57, &b92} + b68.items = []builder{&b16, &b23, &b121} + b34.options = []builder{&b101, &b68} + var b41 = sequenceBuilder{id: 41, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} + var b87 = choiceBuilder{id: 87, commit: 74} + var b102 = sequenceBuilder{id: 102, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b149 = charBuilder{} + b102.items = []builder{&b149} + var b76 = sequenceBuilder{id: 76, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b138 = charBuilder{} + b76.items = []builder{&b138} + var b40 = sequenceBuilder{id: 40, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b61 = charBuilder{} + b40.items = []builder{&b61} + var b95 = sequenceBuilder{id: 95, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b150 = charBuilder{} + b95.items = []builder{&b150} + var b62 = sequenceBuilder{id: 62, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b93 = charBuilder{} + b62.items = []builder{&b93} + var b107 = sequenceBuilder{id: 107, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b19 = charBuilder{} + b107.items = []builder{&b19} + b87.options = []builder{&b102, &b76, &b40, &b95, &b62, &b107} + var b169 = sequenceBuilder{id: 169, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b143 = charBuilder{} + b169.items = []builder{&b143} + b41.items = []builder{&b87, &b169, &b87, &b34} + b18.items = []builder{&b34, &b41} + b185.options = []builder{&b112, &b18} b186.options = []builder{&b185} var b187 = sequenceBuilder{id: 187, commit: 66, ranges: [][]int{{0, 1}, {0, -1}, {0, 1}, {0, 1}}} - var b82 = sequenceBuilder{id: 82, commit: 2, ranges: [][]int{{1, 1}, {0, -1}}} - var b173 = sequenceBuilder{id: 173, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b172 = charBuilder{} - b173.items = []builder{&b172} - var b81 = sequenceBuilder{id: 81, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b81.items = []builder{&b186, &b173} - b82.items = []builder{&b173, &b81} - var b64 = sequenceBuilder{id: 64, commit: 66, ranges: [][]int{{1, 1}, {0, 1}}} - var b131 = sequenceBuilder{id: 131, commit: 64, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} - var b159 = sequenceBuilder{id: 159, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var b44 = sequenceBuilder{id: 44, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}} - var b103 = sequenceBuilder{id: 103, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b78 = charBuilder{} - b103.items = []builder{&b78} - b44.items = []builder{&b103} - var b165 = sequenceBuilder{id: 165, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b94 = sequenceBuilder{id: 94, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b141 = charBuilder{} - b94.items = []builder{&b141} - var b27 = choiceBuilder{id: 27, commit: 66} - var b158 = sequenceBuilder{id: 158, commit: 72, name: "alias", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b176 = charBuilder{} - var b145 = charBuilder{} - var b60 = charBuilder{} - var b163 = charBuilder{} - var b5 = charBuilder{} - b158.items = []builder{&b176, &b145, &b60, &b163, &b5} - var b75 = sequenceBuilder{id: 75, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b151 = charBuilder{} - var b74 = charBuilder{} - b75.items = []builder{&b151, &b74} - var b121 = sequenceBuilder{id: 121, commit: 72, name: "nows", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b111 = charBuilder{} - var b54 = charBuilder{} - var b68 = charBuilder{} - var b127 = charBuilder{} - b121.items = []builder{&b111, &b54, &b68, &b127} - var b36 = sequenceBuilder{id: 36, commit: 72, name: "failpass", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b6 = charBuilder{} - var b171 = charBuilder{} - var b108 = charBuilder{} - var b32 = charBuilder{} - var b61 = charBuilder{} - var b69 = charBuilder{} - var b49 = charBuilder{} - var b164 = charBuilder{} - b36.items = []builder{&b6, &b171, &b108, &b32, &b61, &b69, &b49, &b164} - var b109 = sequenceBuilder{id: 109, commit: 72, name: "root", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b128 = charBuilder{} + var b31 = sequenceBuilder{id: 31, commit: 2, ranges: [][]int{{1, 1}, {0, -1}}} + var b174 = sequenceBuilder{id: 174, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b9 = charBuilder{} - var b183 = charBuilder{} - var b47 = charBuilder{} - b109.items = []builder{&b128, &b9, &b183, &b47} - b27.options = []builder{&b158, &b75, &b121, &b36, &b109} - b165.items = []builder{&b94, &b27} - b159.items = []builder{&b44, &b165} - var b122 = sequenceBuilder{id: 122, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b80 = charBuilder{} - b122.items = []builder{&b80} - var b136 = choiceBuilder{id: 136, commit: 66} - var b2 = choiceBuilder{id: 2, commit: 66} - var b168 = sequenceBuilder{id: 168, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b125 = charBuilder{} - b168.items = []builder{&b125} - var b13 = sequenceBuilder{id: 13, commit: 72, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}} - var b134 = sequenceBuilder{id: 134, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b148 = charBuilder{} - b134.items = []builder{&b148} - var b153 = sequenceBuilder{id: 153, commit: 72, name: "class-not", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b42 = charBuilder{} - b153.items = []builder{&b42} - var b77 = choiceBuilder{id: 77, commit: 10} - var b155 = choiceBuilder{id: 155, commit: 72, name: "class-char"} + b174.items = []builder{&b9} + var b30 = sequenceBuilder{id: 30, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b30.items = []builder{&b186, &b174} + b31.items = []builder{&b174, &b30} + var b142 = sequenceBuilder{id: 142, commit: 66, ranges: [][]int{{1, 1}, {0, 1}}} + var b173 = sequenceBuilder{id: 173, commit: 64, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var b71 = sequenceBuilder{id: 71, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b28 = sequenceBuilder{id: 28, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}} + var b177 = sequenceBuilder{id: 177, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b79 = charBuilder{} + b177.items = []builder{&b79} + b28.items = []builder{&b177} + var b86 = sequenceBuilder{id: 86, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} var b85 = sequenceBuilder{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b152 = charBuilder{} + b85.items = []builder{&b152} + var b151 = choiceBuilder{id: 151, commit: 66} + var b50 = sequenceBuilder{id: 50, commit: 72, name: "alias", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b81 = charBuilder{} + var b14 = charBuilder{} + var b97 = charBuilder{} + var b35 = charBuilder{} + var b171 = charBuilder{} + b50.items = []builder{&b81, &b14, &b97, &b35, &b171} + var b69 = sequenceBuilder{id: 69, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b116 = charBuilder{} + var b98 = charBuilder{} + b69.items = []builder{&b116, &b98} + var b84 = sequenceBuilder{id: 84, commit: 72, name: "nows", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b99 = charBuilder{} + var b90 = charBuilder{} + var b106 = charBuilder{} + var b126 = charBuilder{} + b84.items = []builder{&b99, &b90, &b106, &b126} + var b172 = sequenceBuilder{id: 172, commit: 72, name: "failpass", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b180 = charBuilder{} var b135 = charBuilder{} - b85.items = []builder{&b135} - var b169 = sequenceBuilder{id: 169, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b12 = sequenceBuilder{id: 12, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b11 = charBuilder{} - b12.items = []builder{&b11} - var b146 = sequenceBuilder{id: 146, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b31 = charBuilder{} - b146.items = []builder{&b31} - b169.items = []builder{&b12, &b146} - b155.options = []builder{&b85, &b169} - var b72 = sequenceBuilder{id: 72, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b50 = sequenceBuilder{id: 50, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b178 = charBuilder{} - b50.items = []builder{&b178} - b72.items = []builder{&b155, &b50, &b155} - b77.options = []builder{&b155, &b72} - var b52 = sequenceBuilder{id: 52, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b37 = charBuilder{} - b52.items = []builder{&b37} - b13.items = []builder{&b134, &b153, &b77, &b52} - var b38 = sequenceBuilder{id: 38, commit: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} - var b51 = sequenceBuilder{id: 51, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b86 = charBuilder{} - b51.items = []builder{&b86} - var b126 = choiceBuilder{id: 126, commit: 72, name: "sequence-char"} - var b88 = sequenceBuilder{id: 88, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b1 = charBuilder{} - b88.items = []builder{&b1} - var b102 = sequenceBuilder{id: 102, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} - var b67 = sequenceBuilder{id: 67, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b143 = charBuilder{} - b67.items = []builder{&b143} - var b73 = sequenceBuilder{id: 73, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b43 = charBuilder{} - b73.items = []builder{&b43} - b102.items = []builder{&b67, &b73} - b126.options = []builder{&b88, &b102} - var b149 = sequenceBuilder{id: 149, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b22 = charBuilder{} - b149.items = []builder{&b22} - b38.items = []builder{&b51, &b126, &b149} - b2.options = []builder{&b168, &b13, &b38} - var b14 = sequenceBuilder{id: 14, commit: 66, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} - var b79 = sequenceBuilder{id: 79, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b57 = charBuilder{} - b79.items = []builder{&b57} - var b3 = sequenceBuilder{id: 3, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b124 = charBuilder{} - b3.items = []builder{&b124} - b14.items = []builder{&b79, &b186, &b136, &b186, &b3} - var b26 = sequenceBuilder{id: 26, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}} - var b4 = sequenceBuilder{id: 4, commit: 72, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}} - var b29 = choiceBuilder{id: 29, commit: 10} - b29.options = []builder{&b2, &b44, &b14} - var b53 = choiceBuilder{id: 53, commit: 66} - var b113 = sequenceBuilder{id: 113, commit: 64, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} - var b182 = sequenceBuilder{id: 182, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b104 = charBuilder{} - b182.items = []builder{&b104} - var b89 = sequenceBuilder{id: 89, commit: 64, name: "count", ranges: [][]int{{1, 1}}} - var b112 = sequenceBuilder{id: 112, commit: 74, ranges: [][]int{{1, -1}, {1, -1}}} - var b150 = sequenceBuilder{id: 150, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b163 = charBuilder{} var b15 = charBuilder{} - b150.items = []builder{&b15} - b112.items = []builder{&b150} - b89.items = []builder{&b112} - var b18 = sequenceBuilder{id: 18, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b120 = charBuilder{} - b18.items = []builder{&b120} - b113.items = []builder{&b182, &b186, &b89, &b186, &b18} - var b58 = sequenceBuilder{id: 58, commit: 64, name: "range-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} - var b170 = sequenceBuilder{id: 170, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b95 = charBuilder{} - b170.items = []builder{&b95} - var b90 = sequenceBuilder{id: 90, commit: 64, name: "range-from", ranges: [][]int{{1, 1}}} - b90.items = []builder{&b112} + var b127 = charBuilder{} + var b70 = charBuilder{} + var b60 = charBuilder{} + var b167 = charBuilder{} + b172.items = []builder{&b180, &b135, &b163, &b15, &b127, &b70, &b60, &b167} + var b36 = sequenceBuilder{id: 36, commit: 72, name: "root", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b147 = charBuilder{} + var b128 = charBuilder{} + var b103 = charBuilder{} + var b136 = charBuilder{} + b36.items = []builder{&b147, &b128, &b103, &b136} + b151.options = []builder{&b50, &b69, &b84, &b172, &b36} + b86.items = []builder{&b85, &b151} + b71.items = []builder{&b28, &b86} + var b181 = sequenceBuilder{id: 181, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b104 = charBuilder{} + b181.items = []builder{&b104} + var b162 = choiceBuilder{id: 162, commit: 66} + var b130 = choiceBuilder{id: 130, commit: 66} + var b58 = sequenceBuilder{id: 58, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b113 = charBuilder{} + b58.items = []builder{&b113} + var b114 = sequenceBuilder{id: 114, commit: 72, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}} + var b73 = sequenceBuilder{id: 73, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b160 = charBuilder{} + b73.items = []builder{&b160} + var b175 = sequenceBuilder{id: 175, commit: 72, name: "class-not", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b108 = charBuilder{} + b175.items = []builder{&b108} + var b48 = choiceBuilder{id: 48, commit: 10} + var b37 = choiceBuilder{id: 37, commit: 72, name: "class-char"} + var b176 = sequenceBuilder{id: 176, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b88 = charBuilder{} + b176.items = []builder{&b88} + var b89 = sequenceBuilder{id: 89, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b42 = sequenceBuilder{id: 42, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b7 = charBuilder{} + b42.items = []builder{&b7} var b139 = sequenceBuilder{id: 139, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b33 = charBuilder{} - b139.items = []builder{&b33} - var b156 = sequenceBuilder{id: 156, commit: 64, name: "range-to", ranges: [][]int{{1, 1}}} - b156.items = []builder{&b112} - var b48 = sequenceBuilder{id: 48, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b114 = charBuilder{} - b48.items = []builder{&b114} - b58.items = []builder{&b170, &b186, &b90, &b186, &b139, &b186, &b156, &b186, &b48} - var b115 = sequenceBuilder{id: 115, commit: 72, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b105 = charBuilder{} - b115.items = []builder{&b105} - var b147 = sequenceBuilder{id: 147, commit: 72, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b140 = charBuilder{} - b147.items = []builder{&b140} - var b34 = sequenceBuilder{id: 34, commit: 72, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b157 = charBuilder{} - b34.items = []builder{&b157} - b53.options = []builder{&b113, &b58, &b115, &b147, &b34} - b4.items = []builder{&b29, &b53} - var b25 = sequenceBuilder{id: 25, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b25.items = []builder{&b186, &b4} - b26.items = []builder{&b4, &b25} - var b117 = sequenceBuilder{id: 117, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var b59 = choiceBuilder{id: 59, commit: 66} - b59.options = []builder{&b2, &b44, &b14, &b26} - var b93 = sequenceBuilder{id: 93, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}} - var b35 = sequenceBuilder{id: 35, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b144 = charBuilder{} - b35.items = []builder{&b144} - b93.items = []builder{&b35, &b186, &b59} - var b116 = sequenceBuilder{id: 116, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b116.items = []builder{&b186, &b93} - b117.items = []builder{&b59, &b186, &b93, &b116} - b136.options = []builder{&b2, &b44, &b14, &b26, &b117} - b131.items = []builder{&b159, &b186, &b122, &b186, &b136} - var b63 = sequenceBuilder{id: 63, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} - var b97 = sequenceBuilder{id: 97, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}} - var b70 = sequenceBuilder{id: 70, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + b139.items = []builder{&b144} + b89.items = []builder{&b42, &b139} + b37.options = []builder{&b176, &b89} + var b82 = sequenceBuilder{id: 82, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b8 = sequenceBuilder{id: 8, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b145 = charBuilder{} + b8.items = []builder{&b145} + b82.items = []builder{&b37, &b8, &b37} + b48.options = []builder{&b37, &b82} + var b38 = sequenceBuilder{id: 38, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b51 = charBuilder{} + b38.items = []builder{&b51} + b114.items = []builder{&b73, &b175, &b48, &b38} + var b2 = sequenceBuilder{id: 2, commit: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} + var b1 = sequenceBuilder{id: 1, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b26 = charBuilder{} + b1.items = []builder{&b26} + var b96 = choiceBuilder{id: 96, commit: 72, name: "sequence-char"} + var b77 = sequenceBuilder{id: 77, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b20 = charBuilder{} + b77.items = []builder{&b20} + var b75 = sequenceBuilder{id: 75, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b49 = sequenceBuilder{id: 49, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b74 = charBuilder{} + b49.items = []builder{&b74} + var b154 = sequenceBuilder{id: 154, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b132 = charBuilder{} - b70.items = []builder{&b132} - var b96 = sequenceBuilder{id: 96, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b96.items = []builder{&b186, &b70} - b97.items = []builder{&b70, &b96, &b186, &b131} - var b62 = sequenceBuilder{id: 62, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b62.items = []builder{&b186, &b97} - b63.items = []builder{&b186, &b97, &b62} - b64.items = []builder{&b131, &b63} - var b84 = sequenceBuilder{id: 84, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} - var b30 = sequenceBuilder{id: 30, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} - var b19 = charBuilder{} - b30.items = []builder{&b19} - var b83 = sequenceBuilder{id: 83, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} - b83.items = []builder{&b186, &b30} - b84.items = []builder{&b186, &b30, &b83} - b187.items = []builder{&b82, &b186, &b64, &b84} + b154.items = []builder{&b132} + b75.items = []builder{&b49, &b154} + b96.options = []builder{&b77, &b75} + var b155 = sequenceBuilder{id: 155, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b94 = charBuilder{} + b155.items = []builder{&b94} + b2.items = []builder{&b1, &b96, &b155} + b130.options = []builder{&b58, &b114, &b2} + var b27 = sequenceBuilder{id: 27, commit: 66, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var b166 = sequenceBuilder{id: 166, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b110 = charBuilder{} + b166.items = []builder{&b110} + var b83 = sequenceBuilder{id: 83, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b52 = charBuilder{} + b83.items = []builder{&b52} + b27.items = []builder{&b166, &b186, &b162, &b186, &b83} + var b124 = sequenceBuilder{id: 124, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}} + var b65 = sequenceBuilder{id: 65, commit: 72, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}} + var b44 = choiceBuilder{id: 44, commit: 10} + b44.options = []builder{&b130, &b28, &b27} + var b29 = choiceBuilder{id: 29, commit: 66} + var b161 = sequenceBuilder{id: 161, commit: 64, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var b156 = sequenceBuilder{id: 156, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b170 = charBuilder{} + b156.items = []builder{&b170} + var b53 = sequenceBuilder{id: 53, commit: 64, name: "count", ranges: [][]int{{1, 1}}} + var b146 = sequenceBuilder{id: 146, commit: 74, ranges: [][]int{{1, -1}, {1, -1}}} + var b63 = sequenceBuilder{id: 63, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b133 = charBuilder{} + b63.items = []builder{&b133} + b146.items = []builder{&b63} + b53.items = []builder{&b146} + var b39 = sequenceBuilder{id: 39, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b64 = charBuilder{} + b39.items = []builder{&b64} + b161.items = []builder{&b156, &b186, &b53, &b186, &b39} + var b122 = sequenceBuilder{id: 122, commit: 64, name: "range-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}} + var b13 = sequenceBuilder{id: 13, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b115 = charBuilder{} + b13.items = []builder{&b115} + var b80 = sequenceBuilder{id: 80, commit: 64, name: "range-from", ranges: [][]int{{1, 1}}} + b80.items = []builder{&b146} + var b55 = sequenceBuilder{id: 55, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b54 = charBuilder{} + b55.items = []builder{&b54} + var b43 = sequenceBuilder{id: 43, commit: 64, name: "range-to", ranges: [][]int{{1, 1}}} + b43.items = []builder{&b146} + var b78 = sequenceBuilder{id: 78, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b157 = charBuilder{} + b78.items = []builder{&b157} + b122.items = []builder{&b13, &b186, &b80, &b186, &b55, &b186, &b43, &b186, &b78} + var b109 = sequenceBuilder{id: 109, commit: 72, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b111 = charBuilder{} + b109.items = []builder{&b111} + var b105 = sequenceBuilder{id: 105, commit: 72, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b131 = charBuilder{} + b105.items = []builder{&b131} + var b72 = sequenceBuilder{id: 72, commit: 72, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b59 = charBuilder{} + b72.items = []builder{&b59} + b29.options = []builder{&b161, &b122, &b109, &b105, &b72} + b65.items = []builder{&b44, &b29} + var b123 = sequenceBuilder{id: 123, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b123.items = []builder{&b186, &b65} + b124.items = []builder{&b65, &b123} + var b179 = sequenceBuilder{id: 179, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b184 = choiceBuilder{id: 184, commit: 66} + b184.options = []builder{&b130, &b28, &b27, &b124} + var b158 = sequenceBuilder{id: 158, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}} + var b24 = sequenceBuilder{id: 24, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b134 = charBuilder{} + b24.items = []builder{&b134} + b158.items = []builder{&b24, &b186, &b184} + var b178 = sequenceBuilder{id: 178, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b178.items = []builder{&b186, &b158} + b179.items = []builder{&b184, &b186, &b158, &b178} + b162.options = []builder{&b130, &b28, &b27, &b124, &b179} + b173.items = []builder{&b71, &b186, &b181, &b186, &b162} + var b141 = sequenceBuilder{id: 141, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} + var b4 = sequenceBuilder{id: 4, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}} + var b91 = sequenceBuilder{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b153 = charBuilder{} + b91.items = []builder{&b153} + var b3 = sequenceBuilder{id: 3, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b3.items = []builder{&b186, &b91} + b4.items = []builder{&b91, &b3, &b186, &b173} + var b140 = sequenceBuilder{id: 140, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b140.items = []builder{&b186, &b4} + b141.items = []builder{&b186, &b4, &b140} + b142.items = []builder{&b173, &b141} + var b33 = sequenceBuilder{id: 33, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}} + var b120 = sequenceBuilder{id: 120, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b168 = charBuilder{} + b120.items = []builder{&b168} + var b32 = sequenceBuilder{id: 32, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} + b32.items = []builder{&b186, &b120} + b33.items = []builder{&b186, &b120, &b32} + b187.items = []builder{&b31, &b186, &b142, &b33} b188.items = []builder{&b186, &b187, &b186} return parseInput(r, &p188, &b188)