diff --git a/internal/self/self.go b/internal/self/self.go index c207325..ab72687 100644 --- a/internal/self/self.go +++ b/internal/self/self.go @@ -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}}} diff --git a/syntax.treerack b/syntax.treerack index 717dde1..686aae5 100644 --- a/syntax.treerack +++ b/syntax.treerack @@ -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)*;