1
0

reformat self syntax

This commit is contained in:
Arpad Ryszka 2026-06-01 21:40:14 +02:00
parent e025778538
commit bfa71e7a73
2 changed files with 290 additions and 309 deletions

View File

@ -848,66 +848,66 @@ func Parse(r io.Reader) (*Node, error) {
p14.items = []parser{&p13}
p15.options = []parser{&p2, &p4, &p6, &p8, &p10, &p12, &p14}
var p54 = sequenceParser{id: 54, commit: 264, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{193, 194}}
var p37 = choiceParser{id: 37, commit: 266, name: "comment-segment"}
var p36 = sequenceParser{id: 36, commit: 266, name: "line-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{37}}
var p33 = sequenceParser{id: 33, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p31 = charParser{id: 31, chars: []rune{47}}
var p32 = charParser{id: 32, chars: []rune{47}}
p33.items = []parser{&p31, &p32}
var p50 = choiceParser{id: 50, commit: 266, name: "comment-segment"}
var p49 = sequenceParser{id: 49, commit: 266, name: "line-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{50}}
var p46 = sequenceParser{id: 46, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p44 = charParser{id: 44, chars: []rune{47}}
var p45 = charParser{id: 45, chars: []rune{47}}
p46.items = []parser{&p44, &p45}
var p48 = sequenceParser{id: 48, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p47 = charParser{id: 47, not: true, chars: []rune{10}}
p48.items = []parser{&p47}
p49.items = []parser{&p46, &p48}
var p43 = sequenceParser{id: 43, commit: 266, name: "block-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{50}}
var p31 = sequenceParser{id: 31, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p29 = charParser{id: 29, chars: []rune{47}}
var p30 = charParser{id: 30, chars: []rune{42}}
p31.items = []parser{&p29, &p30}
var p39 = choiceParser{id: 39, commit: 10}
var p36 = sequenceParser{id: 36, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{39}}
var p33 = sequenceParser{id: 33, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p32 = charParser{id: 32, chars: []rune{42}}
p33.items = []parser{&p32}
var p35 = sequenceParser{id: 35, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p34 = charParser{id: 34, not: true, chars: []rune{10}}
var p34 = charParser{id: 34, not: true, chars: []rune{47}}
p35.items = []parser{&p34}
p36.items = []parser{&p33, &p35}
var p30 = sequenceParser{id: 30, commit: 266, name: "block-comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{37}}
var p18 = sequenceParser{id: 18, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p16 = charParser{id: 16, chars: []rune{47}}
var p17 = charParser{id: 17, chars: []rune{42}}
p18.items = []parser{&p16, &p17}
var p26 = choiceParser{id: 26, commit: 10}
var p23 = sequenceParser{id: 23, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{26}}
var p20 = sequenceParser{id: 20, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p19 = charParser{id: 19, chars: []rune{42}}
p20.items = []parser{&p19}
var p22 = sequenceParser{id: 22, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p21 = charParser{id: 21, not: true, chars: []rune{47}}
p22.items = []parser{&p21}
p23.items = []parser{&p20, &p22}
var p25 = sequenceParser{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{26}}
var p24 = charParser{id: 24, not: true, chars: []rune{42}}
p25.items = []parser{&p24}
p26.options = []parser{&p23, &p25}
var p29 = sequenceParser{id: 29, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p27 = charParser{id: 27, chars: []rune{42}}
var p28 = charParser{id: 28, chars: []rune{47}}
p29.items = []parser{&p27, &p28}
p30.items = []parser{&p18, &p26, &p29}
p37.options = []parser{&p36, &p30}
var p38 = sequenceParser{id: 38, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{39}}
var p37 = charParser{id: 37, not: true, chars: []rune{42}}
p38.items = []parser{&p37}
p39.options = []parser{&p36, &p38}
var p42 = sequenceParser{id: 42, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var p40 = charParser{id: 40, chars: []rune{42}}
var p41 = charParser{id: 41, chars: []rune{47}}
p42.items = []parser{&p40, &p41}
p43.items = []parser{&p31, &p39, &p42}
p50.options = []parser{&p49, &p43}
var p53 = sequenceParser{id: 53, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}}
var p50 = choiceParser{id: 50, commit: 266, name: "ws-no-nl"}
var p39 = sequenceParser{id: 39, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p38 = charParser{id: 38, chars: []rune{32}}
p39.items = []parser{&p38}
var p41 = sequenceParser{id: 41, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p40 = charParser{id: 40, chars: []rune{9}}
p41.items = []parser{&p40}
var p43 = sequenceParser{id: 43, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p42 = charParser{id: 42, chars: []rune{8}}
p43.items = []parser{&p42}
var p45 = sequenceParser{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p44 = charParser{id: 44, chars: []rune{12}}
p45.items = []parser{&p44}
var p47 = sequenceParser{id: 47, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p46 = charParser{id: 46, chars: []rune{13}}
p47.items = []parser{&p46}
var p49 = sequenceParser{id: 49, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var p48 = charParser{id: 48, chars: []rune{11}}
p49.items = []parser{&p48}
p50.options = []parser{&p39, &p41, &p43, &p45, &p47, &p49}
var p28 = choiceParser{id: 28, commit: 266, name: "ws-no-nl"}
var p17 = sequenceParser{id: 17, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p16 = charParser{id: 16, chars: []rune{32}}
p17.items = []parser{&p16}
var p19 = sequenceParser{id: 19, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p18 = charParser{id: 18, chars: []rune{9}}
p19.items = []parser{&p18}
var p21 = sequenceParser{id: 21, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p20 = charParser{id: 20, chars: []rune{8}}
p21.items = []parser{&p20}
var p23 = sequenceParser{id: 23, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p22 = charParser{id: 22, chars: []rune{12}}
p23.items = []parser{&p22}
var p25 = sequenceParser{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p24 = charParser{id: 24, chars: []rune{13}}
p25.items = []parser{&p24}
var p27 = sequenceParser{id: 27, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var p26 = charParser{id: 26, chars: []rune{11}}
p27.items = []parser{&p26}
p28.options = []parser{&p17, &p19, &p21, &p23, &p25, &p27}
var p52 = sequenceParser{id: 52, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p51 = charParser{id: 51, chars: []rune{10}}
p52.items = []parser{&p51}
p53.items = []parser{&p50, &p52, &p50, &p37}
p54.items = []parser{&p37, &p53}
p53.items = []parser{&p28, &p52, &p28, &p50}
p54.items = []parser{&p50, &p53}
p193.options = []parser{&p15, &p54}
p194.options = []parser{&p193}
var p195 = sequenceParser{id: 195, commit: 258, name: "syntax:wsroot", ranges: [][]int{{0, 1}, {0, -1}, {0, 1}, {0, 1}}}
@ -921,7 +921,7 @@ func Parse(r io.Reader) (*Node, error) {
var p184 = sequenceParser{id: 184, commit: 258, name: "definitions", ranges: [][]int{{1, 1}, {0, 1}}}
var p177 = sequenceParser{id: 177, commit: 256, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}}
var p174 = sequenceParser{id: 174, commit: 266, name: "definition-name", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}}
var p92 = sequenceParser{id: 92, commit: 264, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{133, 123, 127}}
var p92 = sequenceParser{id: 92, commit: 264, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{98, 124, 128}}
var p91 = sequenceParser{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p90 = charParser{id: 90, 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}}
p91.items = []parser{&p90}
@ -980,12 +980,12 @@ func Parse(r io.Reader) (*Node, error) {
var p176 = sequenceParser{id: 176, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p175 = charParser{id: 175, chars: []rune{61}}
p176.items = []parser{&p175}
var p133 = choiceParser{id: 133, commit: 258, name: "expression"}
var p89 = choiceParser{id: 89, commit: 258, name: "terminal", generalizations: []int{133, 123, 127}}
var p56 = sequenceParser{id: 56, commit: 264, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var p98 = choiceParser{id: 98, commit: 258, name: "expression"}
var p89 = choiceParser{id: 89, commit: 258, name: "terminal", generalizations: []int{98, 124, 128}}
var p56 = sequenceParser{id: 56, commit: 264, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var p55 = charParser{id: 55, chars: []rune{46}}
p56.items = []parser{&p55}
var p75 = sequenceParser{id: 75, commit: 264, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var p75 = sequenceParser{id: 75, commit: 264, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var p71 = sequenceParser{id: 71, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p70 = charParser{id: 70, chars: []rune{91}}
p71.items = []parser{&p70}
@ -1016,7 +1016,7 @@ func Parse(r io.Reader) (*Node, error) {
var p73 = charParser{id: 73, chars: []rune{93}}
p74.items = []parser{&p73}
p75.items = []parser{&p71, &p58, &p72, &p74}
var p88 = sequenceParser{id: 88, commit: 264, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var p88 = sequenceParser{id: 88, commit: 264, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var p85 = sequenceParser{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p84 = charParser{id: 84, chars: []rune{34}}
p85.items = []parser{&p84}
@ -1038,76 +1038,76 @@ func Parse(r io.Reader) (*Node, error) {
p87.items = []parser{&p86}
p88.items = []parser{&p85, &p83, &p87}
p89.options = []parser{&p56, &p75, &p88}
var p97 = sequenceParser{id: 97, commit: 258, name: "group", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{133, 123, 127}}
var p97 = sequenceParser{id: 97, commit: 258, name: "group", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{98, 124, 128}}
var p94 = sequenceParser{id: 94, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p93 = charParser{id: 93, chars: []rune{40}}
p94.items = []parser{&p93}
var p96 = sequenceParser{id: 96, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p95 = charParser{id: 95, chars: []rune{41}}
p96.items = []parser{&p95}
p97.items = []parser{&p94, &p194, &p133, &p194, &p96}
var p126 = sequenceParser{id: 126, commit: 256, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{133, 127}}
var p124 = sequenceParser{id: 124, commit: 264, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}}
var p123 = choiceParser{id: 123, commit: 10}
p123.options = []parser{&p89, &p92, &p97}
var p122 = choiceParser{id: 122, commit: 258, name: "quantity"}
var p106 = sequenceParser{id: 106, commit: 256, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{122}}
var p103 = sequenceParser{id: 103, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p102 = charParser{id: 102, chars: []rune{123}}
p103.items = []parser{&p102}
var p101 = sequenceParser{id: 101, commit: 256, name: "count", ranges: [][]int{{1, 1}}}
var p100 = sequenceParser{id: 100, commit: 266, name: "number", ranges: [][]int{{1, -1}, {1, -1}}}
var p99 = sequenceParser{id: 99, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p98 = charParser{id: 98, ranges: [][]rune{{48, 57}}}
p99.items = []parser{&p98}
p97.items = []parser{&p94, &p194, &p98, &p194, &p96}
var p127 = sequenceParser{id: 127, commit: 256, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{98, 128}}
var p125 = sequenceParser{id: 125, commit: 264, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}}
var p124 = choiceParser{id: 124, commit: 10}
p124.options = []parser{&p89, &p92, &p97}
var p123 = choiceParser{id: 123, commit: 258, name: "quantity"}
var p107 = sequenceParser{id: 107, commit: 256, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{123}}
var p104 = sequenceParser{id: 104, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p103 = charParser{id: 103, chars: []rune{123}}
p104.items = []parser{&p103}
var p102 = sequenceParser{id: 102, commit: 256, name: "count", ranges: [][]int{{1, 1}}}
var p101 = sequenceParser{id: 101, commit: 266, name: "number", ranges: [][]int{{1, -1}, {1, -1}}}
var p100 = sequenceParser{id: 100, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p99 = charParser{id: 99, ranges: [][]rune{{48, 57}}}
p100.items = []parser{&p99}
p101.items = []parser{&p100}
var p105 = sequenceParser{id: 105, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p104 = charParser{id: 104, chars: []rune{125}}
p105.items = []parser{&p104}
p106.items = []parser{&p103, &p194, &p101, &p194, &p105}
var p115 = sequenceParser{id: 115, commit: 256, 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{122}}
var p110 = sequenceParser{id: 110, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p109 = charParser{id: 109, chars: []rune{123}}
p110.items = []parser{&p109}
var p107 = sequenceParser{id: 107, commit: 256, name: "range-from", ranges: [][]int{{1, 1}}}
p107.items = []parser{&p100}
var p112 = sequenceParser{id: 112, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p111 = charParser{id: 111, chars: []rune{44}}
p112.items = []parser{&p111}
var p108 = sequenceParser{id: 108, commit: 256, name: "range-to", ranges: [][]int{{1, 1}}}
p108.items = []parser{&p100}
var p114 = sequenceParser{id: 114, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p113 = charParser{id: 113, chars: []rune{125}}
p114.items = []parser{&p113}
p115.items = []parser{&p110, &p194, &p107, &p194, &p112, &p194, &p108, &p194, &p114}
var p117 = sequenceParser{id: 117, commit: 264, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var p116 = charParser{id: 116, chars: []rune{43}}
p117.items = []parser{&p116}
var p119 = sequenceParser{id: 119, commit: 264, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var p118 = charParser{id: 118, chars: []rune{42}}
p119.items = []parser{&p118}
var p121 = sequenceParser{id: 121, commit: 264, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var p120 = charParser{id: 120, chars: []rune{63}}
p121.items = []parser{&p120}
p122.options = []parser{&p106, &p115, &p117, &p119, &p121}
p124.items = []parser{&p123, &p122}
var p125 = sequenceParser{id: 125, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
p125.items = []parser{&p194, &p124}
p126.items = []parser{&p124, &p125}
var p132 = sequenceParser{id: 132, commit: 256, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{133}}
var p127 = choiceParser{id: 127, commit: 258, name: "option"}
p127.options = []parser{&p89, &p92, &p97, &p126}
var p130 = sequenceParser{id: 130, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}}
var p129 = sequenceParser{id: 129, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p128 = charParser{id: 128, chars: []rune{124}}
p129.items = []parser{&p128}
p130.items = []parser{&p129, &p194, &p127}
var p131 = sequenceParser{id: 131, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
p131.items = []parser{&p194, &p130}
p132.items = []parser{&p127, &p194, &p130, &p131}
p133.options = []parser{&p89, &p92, &p97, &p126, &p132}
p177.items = []parser{&p174, &p194, &p176, &p194, &p133}
p102.items = []parser{&p101}
var p106 = sequenceParser{id: 106, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p105 = charParser{id: 105, chars: []rune{125}}
p106.items = []parser{&p105}
p107.items = []parser{&p104, &p194, &p102, &p194, &p106}
var p116 = sequenceParser{id: 116, commit: 256, 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{123}}
var p111 = sequenceParser{id: 111, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p110 = charParser{id: 110, chars: []rune{123}}
p111.items = []parser{&p110}
var p108 = sequenceParser{id: 108, commit: 256, name: "range-from", ranges: [][]int{{1, 1}}}
p108.items = []parser{&p101}
var p113 = sequenceParser{id: 113, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p112 = charParser{id: 112, chars: []rune{44}}
p113.items = []parser{&p112}
var p109 = sequenceParser{id: 109, commit: 256, name: "range-to", ranges: [][]int{{1, 1}}}
p109.items = []parser{&p101}
var p115 = sequenceParser{id: 115, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p114 = charParser{id: 114, chars: []rune{125}}
p115.items = []parser{&p114}
p116.items = []parser{&p111, &p194, &p108, &p194, &p113, &p194, &p109, &p194, &p115}
var p118 = sequenceParser{id: 118, commit: 264, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var p117 = charParser{id: 117, chars: []rune{43}}
p118.items = []parser{&p117}
var p120 = sequenceParser{id: 120, commit: 264, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var p119 = charParser{id: 119, chars: []rune{42}}
p120.items = []parser{&p119}
var p122 = sequenceParser{id: 122, commit: 264, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var p121 = charParser{id: 121, chars: []rune{63}}
p122.items = []parser{&p121}
p123.options = []parser{&p107, &p116, &p118, &p120, &p122}
p125.items = []parser{&p124, &p123}
var p126 = sequenceParser{id: 126, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
p126.items = []parser{&p194, &p125}
p127.items = []parser{&p125, &p126}
var p133 = sequenceParser{id: 133, commit: 256, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{98}}
var p128 = choiceParser{id: 128, commit: 258, name: "option"}
p128.options = []parser{&p89, &p92, &p97, &p127}
var p131 = sequenceParser{id: 131, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}}
var p130 = sequenceParser{id: 130, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var p129 = charParser{id: 129, chars: []rune{124}}
p130.items = []parser{&p129}
p131.items = []parser{&p130, &p194, &p128}
var p132 = sequenceParser{id: 132, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
p132.items = []parser{&p194, &p131}
p133.items = []parser{&p128, &p194, &p131, &p132}
p98.options = []parser{&p89, &p92, &p97, &p127, &p133}
p177.items = []parser{&p174, &p194, &p176, &p194, &p98}
var p183 = sequenceParser{id: 183, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}}
var p181 = sequenceParser{id: 181, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}}
var p179 = sequenceParser{id: 179, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
@ -1156,66 +1156,66 @@ func Parse(r io.Reader) (*Node, error) {
b14.items = []builder{&b13}
b15.options = []builder{&b2, &b4, &b6, &b8, &b10, &b12, &b14}
var b54 = sequenceBuilder{id: 54, commit: 264, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{193, 194}}
var b37 = choiceBuilder{id: 37, commit: 266}
var b36 = sequenceBuilder{id: 36, commit: 266, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{37}}
var b33 = sequenceBuilder{id: 33, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b31 = charBuilder{}
var b50 = choiceBuilder{id: 50, commit: 266}
var b49 = sequenceBuilder{id: 49, commit: 266, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{50}}
var b46 = sequenceBuilder{id: 46, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b44 = charBuilder{}
var b45 = charBuilder{}
b46.items = []builder{&b44, &b45}
var b48 = sequenceBuilder{id: 48, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b47 = charBuilder{}
b48.items = []builder{&b47}
b49.items = []builder{&b46, &b48}
var b43 = sequenceBuilder{id: 43, commit: 266, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{50}}
var b31 = sequenceBuilder{id: 31, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b29 = charBuilder{}
var b30 = charBuilder{}
b31.items = []builder{&b29, &b30}
var b39 = choiceBuilder{id: 39, commit: 10}
var b36 = sequenceBuilder{id: 36, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{39}}
var b33 = sequenceBuilder{id: 33, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b32 = charBuilder{}
b33.items = []builder{&b31, &b32}
b33.items = []builder{&b32}
var b35 = sequenceBuilder{id: 35, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b34 = charBuilder{}
b35.items = []builder{&b34}
b36.items = []builder{&b33, &b35}
var b30 = sequenceBuilder{id: 30, commit: 266, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{37}}
var b18 = sequenceBuilder{id: 18, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b38 = sequenceBuilder{id: 38, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{39}}
var b37 = charBuilder{}
b38.items = []builder{&b37}
b39.options = []builder{&b36, &b38}
var b42 = sequenceBuilder{id: 42, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b40 = charBuilder{}
var b41 = charBuilder{}
b42.items = []builder{&b40, &b41}
b43.items = []builder{&b31, &b39, &b42}
b50.options = []builder{&b49, &b43}
var b53 = sequenceBuilder{id: 53, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}}
var b28 = choiceBuilder{id: 28, commit: 266}
var b17 = sequenceBuilder{id: 17, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b16 = charBuilder{}
var b17 = charBuilder{}
b18.items = []builder{&b16, &b17}
var b26 = choiceBuilder{id: 26, commit: 10}
var b23 = sequenceBuilder{id: 23, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{26}}
var b20 = sequenceBuilder{id: 20, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b19 = charBuilder{}
b20.items = []builder{&b19}
var b22 = sequenceBuilder{id: 22, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b21 = charBuilder{}
b22.items = []builder{&b21}
b23.items = []builder{&b20, &b22}
var b25 = sequenceBuilder{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{26}}
b17.items = []builder{&b16}
var b19 = sequenceBuilder{id: 19, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b18 = charBuilder{}
b19.items = []builder{&b18}
var b21 = sequenceBuilder{id: 21, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b20 = charBuilder{}
b21.items = []builder{&b20}
var b23 = sequenceBuilder{id: 23, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b22 = charBuilder{}
b23.items = []builder{&b22}
var b25 = sequenceBuilder{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b24 = charBuilder{}
b25.items = []builder{&b24}
b26.options = []builder{&b23, &b25}
var b29 = sequenceBuilder{id: 29, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}}
var b27 = charBuilder{}
var b28 = charBuilder{}
b29.items = []builder{&b27, &b28}
b30.items = []builder{&b18, &b26, &b29}
b37.options = []builder{&b36, &b30}
var b53 = sequenceBuilder{id: 53, commit: 10, ranges: [][]int{{0, -1}, {0, 1}, {0, -1}, {1, 1}, {0, -1}, {0, 1}, {0, -1}, {1, 1}}}
var b50 = choiceBuilder{id: 50, commit: 266}
var b39 = sequenceBuilder{id: 39, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b38 = charBuilder{}
b39.items = []builder{&b38}
var b41 = sequenceBuilder{id: 41, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b40 = charBuilder{}
b41.items = []builder{&b40}
var b43 = sequenceBuilder{id: 43, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b42 = charBuilder{}
b43.items = []builder{&b42}
var b45 = sequenceBuilder{id: 45, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b44 = charBuilder{}
b45.items = []builder{&b44}
var b47 = sequenceBuilder{id: 47, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b46 = charBuilder{}
b47.items = []builder{&b46}
var b49 = sequenceBuilder{id: 49, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{50}}
var b48 = charBuilder{}
b49.items = []builder{&b48}
b50.options = []builder{&b39, &b41, &b43, &b45, &b47, &b49}
var b27 = sequenceBuilder{id: 27, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{28}}
var b26 = charBuilder{}
b27.items = []builder{&b26}
b28.options = []builder{&b17, &b19, &b21, &b23, &b25, &b27}
var b52 = sequenceBuilder{id: 52, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b51 = charBuilder{}
b52.items = []builder{&b51}
b53.items = []builder{&b50, &b52, &b50, &b37}
b54.items = []builder{&b37, &b53}
b53.items = []builder{&b28, &b52, &b28, &b50}
b54.items = []builder{&b50, &b53}
b193.options = []builder{&b15, &b54}
b194.options = []builder{&b193}
var b195 = sequenceBuilder{id: 195, commit: 258, ranges: [][]int{{0, 1}, {0, -1}, {0, 1}, {0, 1}}}
@ -1229,7 +1229,7 @@ func Parse(r io.Reader) (*Node, error) {
var b184 = sequenceBuilder{id: 184, commit: 258, ranges: [][]int{{1, 1}, {0, 1}}}
var b177 = sequenceBuilder{id: 177, commit: 256, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}}
var b174 = sequenceBuilder{id: 174, commit: 266, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}}
var b92 = sequenceBuilder{id: 92, commit: 264, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{133, 123, 127}}
var b92 = sequenceBuilder{id: 92, commit: 264, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{98, 124, 128}}
var b91 = sequenceBuilder{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b90 = charBuilder{}
b91.items = []builder{&b90}
@ -1288,12 +1288,12 @@ func Parse(r io.Reader) (*Node, error) {
var b176 = sequenceBuilder{id: 176, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b175 = charBuilder{}
b176.items = []builder{&b175}
var b133 = choiceBuilder{id: 133, commit: 258}
var b89 = choiceBuilder{id: 89, commit: 258, generalizations: []int{133, 123, 127}}
var b56 = sequenceBuilder{id: 56, commit: 264, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var b98 = choiceBuilder{id: 98, commit: 258}
var b89 = choiceBuilder{id: 89, commit: 258, generalizations: []int{98, 124, 128}}
var b56 = sequenceBuilder{id: 56, commit: 264, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var b55 = charBuilder{}
b56.items = []builder{&b55}
var b75 = sequenceBuilder{id: 75, commit: 264, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var b75 = sequenceBuilder{id: 75, commit: 264, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var b71 = sequenceBuilder{id: 71, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b70 = charBuilder{}
b71.items = []builder{&b70}
@ -1324,7 +1324,7 @@ func Parse(r io.Reader) (*Node, error) {
var b73 = charBuilder{}
b74.items = []builder{&b73}
b75.items = []builder{&b71, &b58, &b72, &b74}
var b88 = sequenceBuilder{id: 88, commit: 264, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}}
var b88 = sequenceBuilder{id: 88, commit: 264, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 98, 124, 128}}
var b85 = sequenceBuilder{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b84 = charBuilder{}
b85.items = []builder{&b84}
@ -1346,76 +1346,76 @@ func Parse(r io.Reader) (*Node, error) {
b87.items = []builder{&b86}
b88.items = []builder{&b85, &b83, &b87}
b89.options = []builder{&b56, &b75, &b88}
var b97 = sequenceBuilder{id: 97, commit: 258, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{133, 123, 127}}
var b97 = sequenceBuilder{id: 97, commit: 258, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{98, 124, 128}}
var b94 = sequenceBuilder{id: 94, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b93 = charBuilder{}
b94.items = []builder{&b93}
var b96 = sequenceBuilder{id: 96, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b95 = charBuilder{}
b96.items = []builder{&b95}
b97.items = []builder{&b94, &b194, &b133, &b194, &b96}
var b126 = sequenceBuilder{id: 126, commit: 256, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{133, 127}}
var b124 = sequenceBuilder{id: 124, commit: 264, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}}
var b123 = choiceBuilder{id: 123, commit: 10}
b123.options = []builder{&b89, &b92, &b97}
var b122 = choiceBuilder{id: 122, commit: 258}
var b106 = sequenceBuilder{id: 106, commit: 256, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{122}}
var b103 = sequenceBuilder{id: 103, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b102 = charBuilder{}
b103.items = []builder{&b102}
var b101 = sequenceBuilder{id: 101, commit: 256, name: "count", ranges: [][]int{{1, 1}}}
var b100 = sequenceBuilder{id: 100, commit: 266, ranges: [][]int{{1, -1}, {1, -1}}}
var b99 = sequenceBuilder{id: 99, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b98 = charBuilder{}
b99.items = []builder{&b98}
b97.items = []builder{&b94, &b194, &b98, &b194, &b96}
var b127 = sequenceBuilder{id: 127, commit: 256, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{98, 128}}
var b125 = sequenceBuilder{id: 125, commit: 264, name: "item", ranges: [][]int{{1, 1}, {0, 1}, {1, 1}, {0, 1}}}
var b124 = choiceBuilder{id: 124, commit: 10}
b124.options = []builder{&b89, &b92, &b97}
var b123 = choiceBuilder{id: 123, commit: 258}
var b107 = sequenceBuilder{id: 107, commit: 256, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{123}}
var b104 = sequenceBuilder{id: 104, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b103 = charBuilder{}
b104.items = []builder{&b103}
var b102 = sequenceBuilder{id: 102, commit: 256, name: "count", ranges: [][]int{{1, 1}}}
var b101 = sequenceBuilder{id: 101, commit: 266, ranges: [][]int{{1, -1}, {1, -1}}}
var b100 = sequenceBuilder{id: 100, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b99 = charBuilder{}
b100.items = []builder{&b99}
b101.items = []builder{&b100}
var b105 = sequenceBuilder{id: 105, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b104 = charBuilder{}
b105.items = []builder{&b104}
b106.items = []builder{&b103, &b194, &b101, &b194, &b105}
var b115 = sequenceBuilder{id: 115, commit: 256, 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{122}}
var b110 = sequenceBuilder{id: 110, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b109 = charBuilder{}
b110.items = []builder{&b109}
var b107 = sequenceBuilder{id: 107, commit: 256, name: "range-from", ranges: [][]int{{1, 1}}}
b107.items = []builder{&b100}
var b112 = sequenceBuilder{id: 112, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b111 = charBuilder{}
b112.items = []builder{&b111}
var b108 = sequenceBuilder{id: 108, commit: 256, name: "range-to", ranges: [][]int{{1, 1}}}
b108.items = []builder{&b100}
var b114 = sequenceBuilder{id: 114, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b113 = charBuilder{}
b114.items = []builder{&b113}
b115.items = []builder{&b110, &b194, &b107, &b194, &b112, &b194, &b108, &b194, &b114}
var b117 = sequenceBuilder{id: 117, commit: 264, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var b116 = charBuilder{}
b117.items = []builder{&b116}
var b119 = sequenceBuilder{id: 119, commit: 264, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var b118 = charBuilder{}
b119.items = []builder{&b118}
var b121 = sequenceBuilder{id: 121, commit: 264, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{122}}
var b120 = charBuilder{}
b121.items = []builder{&b120}
b122.options = []builder{&b106, &b115, &b117, &b119, &b121}
b124.items = []builder{&b123, &b122}
var b125 = sequenceBuilder{id: 125, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
b125.items = []builder{&b194, &b124}
b126.items = []builder{&b124, &b125}
var b132 = sequenceBuilder{id: 132, commit: 256, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{133}}
var b127 = choiceBuilder{id: 127, commit: 258}
b127.options = []builder{&b89, &b92, &b97, &b126}
var b130 = sequenceBuilder{id: 130, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}}
var b129 = sequenceBuilder{id: 129, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b128 = charBuilder{}
b129.items = []builder{&b128}
b130.items = []builder{&b129, &b194, &b127}
var b131 = sequenceBuilder{id: 131, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
b131.items = []builder{&b194, &b130}
b132.items = []builder{&b127, &b194, &b130, &b131}
b133.options = []builder{&b89, &b92, &b97, &b126, &b132}
b177.items = []builder{&b174, &b194, &b176, &b194, &b133}
b102.items = []builder{&b101}
var b106 = sequenceBuilder{id: 106, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b105 = charBuilder{}
b106.items = []builder{&b105}
b107.items = []builder{&b104, &b194, &b102, &b194, &b106}
var b116 = sequenceBuilder{id: 116, commit: 256, 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{123}}
var b111 = sequenceBuilder{id: 111, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b110 = charBuilder{}
b111.items = []builder{&b110}
var b108 = sequenceBuilder{id: 108, commit: 256, name: "range-from", ranges: [][]int{{1, 1}}}
b108.items = []builder{&b101}
var b113 = sequenceBuilder{id: 113, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b112 = charBuilder{}
b113.items = []builder{&b112}
var b109 = sequenceBuilder{id: 109, commit: 256, name: "range-to", ranges: [][]int{{1, 1}}}
b109.items = []builder{&b101}
var b115 = sequenceBuilder{id: 115, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b114 = charBuilder{}
b115.items = []builder{&b114}
b116.items = []builder{&b111, &b194, &b108, &b194, &b113, &b194, &b109, &b194, &b115}
var b118 = sequenceBuilder{id: 118, commit: 264, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var b117 = charBuilder{}
b118.items = []builder{&b117}
var b120 = sequenceBuilder{id: 120, commit: 264, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var b119 = charBuilder{}
b120.items = []builder{&b119}
var b122 = sequenceBuilder{id: 122, commit: 264, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{123}}
var b121 = charBuilder{}
b122.items = []builder{&b121}
b123.options = []builder{&b107, &b116, &b118, &b120, &b122}
b125.items = []builder{&b124, &b123}
var b126 = sequenceBuilder{id: 126, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
b126.items = []builder{&b194, &b125}
b127.items = []builder{&b125, &b126}
var b133 = sequenceBuilder{id: 133, commit: 256, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{98}}
var b128 = choiceBuilder{id: 128, commit: 258}
b128.options = []builder{&b89, &b92, &b97, &b127}
var b131 = sequenceBuilder{id: 131, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}}
var b130 = sequenceBuilder{id: 130, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}
var b129 = charBuilder{}
b130.items = []builder{&b129}
b131.items = []builder{&b130, &b194, &b128}
var b132 = sequenceBuilder{id: 132, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}}
b132.items = []builder{&b194, &b131}
b133.items = []builder{&b128, &b194, &b131, &b132}
b98.options = []builder{&b89, &b92, &b97, &b127, &b133}
b177.items = []builder{&b174, &b194, &b176, &b194, &b98}
var b183 = sequenceBuilder{id: 183, commit: 2, ranges: [][]int{{0, -1}, {1, 1}, {0, -1}}}
var b181 = sequenceBuilder{id: 181, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {0, -1}, {1, 1}}}
var b179 = sequenceBuilder{id: 179, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}}

View File

@ -1,83 +1,64 @@
/*
foo
*/
// bar
// bar
// baz
/* foo
bar baz */ // foo bar baz
wschar:alias = // foo
/* bar */
" " | "\t" | "\n" | "\b" | "\f" | "\r" | "\v";
wsc:ws = wschar | comment;
block-comment:alias:nows = /* foo */ // bar
"/*" ("*" [^/] | [^*])* "*/";
line-comment:alias:nows = /*
foo
*/
"//" [^\n]*;
comment-segment:alias:nows = // bar
line-comment | block-comment;
ws-no-nl:alias:nows = " "
| "\t"
| "\b"
/* this one */ /* is a */
| "\f"
/* form feed */ /* for sure */
| "\r"
| "\v";
comment:nows = comment-segment
/* segment is not the best name */ /* but */
( ws-no-nl*
"\n"?
ws-no-nl*
/* fine */
comment-segment
)*;
any-char = "."; // equivalent to [^]
// whitespace handling:
wschar:alias = " " | "\t" | "\n" | "\b" | "\f" | "\r" | "\v";
wsc:ws = wschar | comment;
ws-no-nl:alias:nows = " " | "\t" | "\b" | "\f" | "\r" | "\v";
// caution: newline is accepted
/* class not */
// comments:
block-comment:alias:nows = "/*" ("*" [^/] | [^*])* "*/";
line-comment:alias:nows = "//" [^\n]*;
comment-segment:alias:nows = line-comment | block-comment;
comment:nows = comment-segment (ws-no-nl* "\n"? ws-no-nl* comment-segment)*;
// characters:
any-char = "."; // equivalent to [^]
class-not = "^";
class-char:nows = [^\\\[\]\^\-] | "\\" .; /* foo
bar */
class-char:nows = [^\\\[\]\^\-] | "\\" .; // caution: newline is accepted
char-range:nows = class-char "-" class-char; // foo
char-class:nows = "[" class-not? (class-char | char-range)* "]";
// newline is accepted
sequence-char:nows = [^\\"] | "\\" .;
// strings (char sequence):
sequence-char:nows = [^\\"] | "\\" .; // caution: newline is accepted
char-sequence:nows = "\"" sequence-char* "\"";
terminal:alias = any-char | char-class | char-sequence;
symbol:nows = [^\\ \n\t\b\f\r\v/.\[\]\"{}\^+*?|():=;]+;
group:alias = "(" expression ")";
number:alias:nows = [0-9]+;
count = number;
count-quantifier = "{" count "}";
range-from = number;
range-to = number;
range-quantifier = "{" range-from? "," range-to? "}";
one-or-more = "+";
zero-or-more = "*";
zero-or-one = "?";
quantity:alias = count-quantifier | range-quantifier | one-or-more | zero-or-more | zero-or-one;
item:nows = (terminal | symbol | group) quantity?;
sequence = item+;
option:alias = terminal | symbol | group | sequence;
// DOC: how the order matters
choice = option ("|" option)+;
// terminal parsers cannot be composed of other parsers:
terminal:alias = any-char | char-class | char-sequence;
// DOC: not having 'not' needs some tricks sometimes
// symbols can reference other parser definitions, or recursively the containing parser:
symbol:nows = [^\\ \n\t\b\f\r\v/.\[\]\"{}\^+*?|():=;]+;
expression:alias = terminal | symbol | group | sequence | choice;
alias = "alias";
ws = "ws";
nows = "nows";
kw = "kw";
nokw = "nokw";
failpass = "failpass";
root = "root";
flag:alias = alias | ws | nows | kw | nokw | failpass | root;
// grouping allows, for example, use choices as sequence items:
group:alias = "(" expression ")";
expression:alias = terminal | symbol | group | sequence | choice;
// sequences with ranges:
number:alias:nows = [0-9]+;
count = number;
count-quantifier = "{" count "}";
range-from = number;
range-to = number;
range-quantifier = "{" range-from? "," range-to? "}";
one-or-more = "+";
zero-or-more = "*";
zero-or-one = "?";
quantity:alias = count-quantifier | range-quantifier | one-or-more | zero-or-more | zero-or-one;
item:nows = (terminal | symbol | group) quantity?;
sequence = item+;
// choices:
option:alias = terminal | symbol | group | sequence;
choice = option ("|" option)+;
// flags control how the subtrees of the individual parser definitions are handled:
alias = "alias";
ws = "ws";
nows = "nows";
kw = "kw";
nokw = "nokw";
failpass = "failpass";
root = "root";
flag:alias = alias | ws | nows | kw | nokw | failpass | root;
// a syntax document consists of definitions:
definition-name:alias:nows = symbol (":" flag)*;
definition = definition-name "=" expression;
definitions:alias = definition (";"+ definition)*;