diff --git a/choicedefine.go b/choicedefine.go index 4e621f2..feb633f 100644 --- a/choicedefine.go +++ b/choicedefine.go @@ -227,6 +227,15 @@ func (b *choiceBuilder) generate(w io.Writer, done map[string]bool) error { fprintf("name: \"%s\",", b.name) } + if len(b.generalizations) > 0 { + fprintf("generalizations: []int{") + for i := range b.generalizations { + fprintf("%d,", b.generalizations[i]) + } + + fprintf("},") + } + fprintf("};") if len(b.options) > 0 { diff --git a/self/self.go b/self/self.go index 331255f..991ed08 100644 --- a/self/self.go +++ b/self/self.go @@ -1058,33 +1058,33 @@ func Parse(r io.Reader) (*Node, error) { 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 b15 = choiceBuilder{id: 15, commit: 66} - var b2 = sequenceBuilder{id: 2, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b185 = choiceBuilder{id: 185, commit: 70, generalizations: []int{186}} + var b15 = choiceBuilder{id: 15, commit: 66, generalizations: []int{185, 186}} + var b2 = sequenceBuilder{id: 2, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b1 = charBuilder{} b2.items = []builder{&b1} - var b4 = sequenceBuilder{id: 4, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b4 = sequenceBuilder{id: 4, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b3 = charBuilder{} b4.items = []builder{&b3} - var b6 = sequenceBuilder{id: 6, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b6 = sequenceBuilder{id: 6, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b5 = charBuilder{} b6.items = []builder{&b5} - var b8 = sequenceBuilder{id: 8, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b8 = sequenceBuilder{id: 8, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b7 = charBuilder{} b8.items = []builder{&b7} - var b10 = sequenceBuilder{id: 10, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b10 = sequenceBuilder{id: 10, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b9 = charBuilder{} b10.items = []builder{&b9} - var b12 = sequenceBuilder{id: 12, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b12 = sequenceBuilder{id: 12, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b11 = charBuilder{} b12.items = []builder{&b11} - var b14 = sequenceBuilder{id: 14, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b14 = sequenceBuilder{id: 14, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{15, 185, 186}} var b13 = charBuilder{} b14.items = []builder{&b13} b15.options = []builder{&b2, &b4, &b6, &b8, &b10, &b12, &b14} - var b54 = sequenceBuilder{id: 54, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b54 = sequenceBuilder{id: 54, commit: 72, name: "comment", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{185, 186}} var b37 = choiceBuilder{id: 37, commit: 74} - var b36 = sequenceBuilder{id: 36, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b36 = sequenceBuilder{id: 36, commit: 74, 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 b32 = charBuilder{} @@ -1093,13 +1093,13 @@ func Parse(r io.Reader) (*Node, error) { var b34 = charBuilder{} b35.items = []builder{&b34} b36.items = []builder{&b33, &b35} - var b30 = sequenceBuilder{id: 30, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} + var b30 = sequenceBuilder{id: 30, commit: 74, 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 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}}} + 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} @@ -1107,7 +1107,7 @@ func Parse(r io.Reader) (*Node, error) { 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}}} + var b25 = sequenceBuilder{id: 25, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{26}} var b24 = charBuilder{} b25.items = []builder{&b24} b26.options = []builder{&b23, &b25} @@ -1119,22 +1119,22 @@ func Parse(r io.Reader) (*Node, error) { 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: 74} - var b39 = sequenceBuilder{id: 39, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + 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}}} + 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}}} + 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}}} + 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}}} + 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}}} + 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} @@ -1156,7 +1156,7 @@ func Parse(r io.Reader) (*Node, error) { var b176 = sequenceBuilder{id: 176, commit: 66, ranges: [][]int{{1, 1}, {0, 1}}} var b169 = sequenceBuilder{id: 169, commit: 64, name: "definition", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} var b166 = sequenceBuilder{id: 166, commit: 74, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} - var b92 = sequenceBuilder{id: 92, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}} + var b92 = sequenceBuilder{id: 92, commit: 72, name: "symbol", ranges: [][]int{{1, -1}, {1, -1}}, generalizations: []int{133, 123, 127}} var b91 = sequenceBuilder{id: 91, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b90 = charBuilder{} b91.items = []builder{&b90} @@ -1166,24 +1166,24 @@ func Parse(r io.Reader) (*Node, error) { var b163 = charBuilder{} b164.items = []builder{&b163} var b162 = choiceBuilder{id: 162, commit: 66} - var b139 = sequenceBuilder{id: 139, 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 b139 = sequenceBuilder{id: 139, 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{162}} var b134 = charBuilder{} var b135 = charBuilder{} var b136 = charBuilder{} var b137 = charBuilder{} var b138 = charBuilder{} b139.items = []builder{&b134, &b135, &b136, &b137, &b138} - var b142 = sequenceBuilder{id: 142, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b142 = sequenceBuilder{id: 142, commit: 72, name: "ws", allChars: true, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{162}} var b140 = charBuilder{} var b141 = charBuilder{} b142.items = []builder{&b140, &b141} - var b147 = sequenceBuilder{id: 147, 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 b147 = sequenceBuilder{id: 147, 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{162}} var b143 = charBuilder{} var b144 = charBuilder{} var b145 = charBuilder{} var b146 = charBuilder{} b147.items = []builder{&b143, &b144, &b145, &b146} - var b156 = sequenceBuilder{id: 156, 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 b156 = sequenceBuilder{id: 156, 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{162}} var b148 = charBuilder{} var b149 = charBuilder{} var b150 = charBuilder{} @@ -1193,7 +1193,7 @@ func Parse(r io.Reader) (*Node, error) { var b154 = charBuilder{} var b155 = charBuilder{} b156.items = []builder{&b148, &b149, &b150, &b151, &b152, &b153, &b154, &b155} - var b161 = sequenceBuilder{id: 161, 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 b161 = sequenceBuilder{id: 161, 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{162}} var b157 = charBuilder{} var b158 = charBuilder{} var b159 = charBuilder{} @@ -1206,11 +1206,11 @@ func Parse(r io.Reader) (*Node, error) { var b167 = charBuilder{} b168.items = []builder{&b167} var b133 = choiceBuilder{id: 133, commit: 66} - var b89 = choiceBuilder{id: 89, commit: 66} - var b56 = sequenceBuilder{id: 56, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b89 = choiceBuilder{id: 89, commit: 66, generalizations: []int{133, 123, 127}} + var b56 = sequenceBuilder{id: 56, commit: 72, name: "any-char", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}} var b55 = charBuilder{} b56.items = []builder{&b55} - var b75 = sequenceBuilder{id: 75, commit: 72, name: "char-class", ranges: [][]int{{1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 1}, {0, 1}, {0, -1}, {1, 1}}} + var b75 = sequenceBuilder{id: 75, 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{89, 133, 123, 127}} var b71 = sequenceBuilder{id: 71, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b70 = charBuilder{} b71.items = []builder{&b70} @@ -1218,11 +1218,11 @@ func Parse(r io.Reader) (*Node, error) { var b57 = charBuilder{} b58.items = []builder{&b57} var b72 = choiceBuilder{id: 72, commit: 10} - var b66 = choiceBuilder{id: 66, commit: 72, name: "class-char"} - var b60 = sequenceBuilder{id: 60, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b66 = choiceBuilder{id: 66, commit: 72, name: "class-char", generalizations: []int{72}} + var b60 = sequenceBuilder{id: 60, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{66, 72}} var b59 = charBuilder{} b60.items = []builder{&b59} - var b65 = sequenceBuilder{id: 65, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b65 = sequenceBuilder{id: 65, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{66, 72}} var b62 = sequenceBuilder{id: 62, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b61 = charBuilder{} b62.items = []builder{&b61} @@ -1231,7 +1231,7 @@ func Parse(r io.Reader) (*Node, error) { b64.items = []builder{&b63} b65.items = []builder{&b62, &b64} b66.options = []builder{&b60, &b65} - var b69 = sequenceBuilder{id: 69, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b69 = sequenceBuilder{id: 69, commit: 72, name: "char-range", ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{72}} var b68 = sequenceBuilder{id: 68, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b67 = charBuilder{} b68.items = []builder{&b67} @@ -1241,15 +1241,15 @@ 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: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}} + var b88 = sequenceBuilder{id: 88, commit: 72, name: "char-sequence", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{89, 133, 123, 127}} var b85 = sequenceBuilder{id: 85, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b84 = charBuilder{} b85.items = []builder{&b84} var b83 = choiceBuilder{id: 83, commit: 72, name: "sequence-char"} - var b77 = sequenceBuilder{id: 77, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b77 = sequenceBuilder{id: 77, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}, generalizations: []int{83}} var b76 = charBuilder{} b77.items = []builder{&b76} - var b82 = sequenceBuilder{id: 82, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}} + var b82 = sequenceBuilder{id: 82, commit: 10, ranges: [][]int{{1, 1}, {1, 1}, {1, 1}, {1, 1}}, generalizations: []int{83}} var b79 = sequenceBuilder{id: 79, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b78 = charBuilder{} b79.items = []builder{&b78} @@ -1263,7 +1263,7 @@ 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: 66, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var b97 = sequenceBuilder{id: 97, commit: 66, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}, generalizations: []int{133, 123, 127}} var b94 = sequenceBuilder{id: 94, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b93 = charBuilder{} b94.items = []builder{&b93} @@ -1271,12 +1271,12 @@ func Parse(r io.Reader) (*Node, error) { var b95 = charBuilder{} b96.items = []builder{&b95} b97.items = []builder{&b94, &b186, &b133, &b186, &b96} - var b126 = sequenceBuilder{id: 126, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}} + var b126 = sequenceBuilder{id: 126, commit: 64, name: "sequence", ranges: [][]int{{1, 1}, {0, -1}}, generalizations: []int{133, 127}} var b124 = sequenceBuilder{id: 124, commit: 72, 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: 66} - var b106 = sequenceBuilder{id: 106, commit: 64, name: "count-quantifier", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}, {1, 1}}} + var b106 = sequenceBuilder{id: 106, commit: 64, 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} @@ -1291,7 +1291,7 @@ func Parse(r io.Reader) (*Node, error) { var b104 = charBuilder{} b105.items = []builder{&b104} b106.items = []builder{&b103, &b186, &b101, &b186, &b105} - var b115 = sequenceBuilder{id: 115, 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 b115 = sequenceBuilder{id: 115, 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{122}} var b110 = sequenceBuilder{id: 110, commit: 10, allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} var b109 = charBuilder{} b110.items = []builder{&b109} @@ -1306,13 +1306,13 @@ func Parse(r io.Reader) (*Node, error) { var b113 = charBuilder{} b114.items = []builder{&b113} b115.items = []builder{&b110, &b186, &b107, &b186, &b112, &b186, &b108, &b186, &b114} - var b117 = sequenceBuilder{id: 117, commit: 72, name: "one-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b117 = sequenceBuilder{id: 117, commit: 72, 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: 72, name: "zero-or-more", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b119 = sequenceBuilder{id: 119, commit: 72, 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: 72, name: "zero-or-one", allChars: true, ranges: [][]int{{1, 1}, {1, 1}}} + var b121 = sequenceBuilder{id: 121, commit: 72, 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} @@ -1320,7 +1320,7 @@ func Parse(r io.Reader) (*Node, error) { var b125 = sequenceBuilder{id: 125, commit: 2, ranges: [][]int{{0, -1}, {1, 1}}} b125.items = []builder{&b186, &b124} b126.items = []builder{&b124, &b125} - var b132 = sequenceBuilder{id: 132, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}} + var b132 = sequenceBuilder{id: 132, commit: 64, name: "choice", ranges: [][]int{{1, 1}, {0, -1}, {1, 1}, {0, -1}}, generalizations: []int{133}} var b127 = choiceBuilder{id: 127, commit: 66} b127.options = []builder{&b89, &b92, &b97, &b126} var b130 = sequenceBuilder{id: 130, commit: 2, ranges: [][]int{{1, 1}, {0, -1}, {1, 1}}} diff --git a/sequencedefine.go b/sequencedefine.go index 9b84748..93fe0a3 100644 --- a/sequencedefine.go +++ b/sequencedefine.go @@ -394,6 +394,15 @@ func (b *sequenceBuilder) generate(w io.Writer, done map[string]bool) error { fprintf("},") } + if len(b.generalizations) > 0 { + fprintf("generalizations: []int{") + for i := range b.generalizations { + fprintf("%d,", b.generalizations[i]) + } + + fprintf("},") + } + fprintf("};") if len(b.items) > 0 {