blob: 6b8a4e60c5e58f470a2413318c0a1fc04cf3d6c8 [file] [log] [blame]
Zack Williamse940c7a2019-08-21 14:25:39 -07001// Code generated by goyacc -o proto.y.go -p proto proto.y. DO NOT EDIT.
2
3//line proto.y:2
4package protoparse
5
6import __yyfmt__ "fmt"
7
8//line proto.y:2
9
10//lint:file-ignore SA4006 generated parser has unused values
11
12import (
13 "fmt"
14 "math"
15 "unicode"
16
17 "github.com/jhump/protoreflect/desc/internal"
18)
19
20//line proto.y:18
21type protoSymType struct {
22 yys int
23 file *fileNode
24 fileDecls []*fileElement
25 syn *syntaxNode
26 pkg *packageNode
27 imprt *importNode
28 msg *messageNode
29 msgDecls []*messageElement
30 fld *fieldNode
31 mapFld *mapFieldNode
32 grp *groupNode
33 oo *oneOfNode
34 ooDecls []*oneOfElement
35 ext *extensionRangeNode
36 resvd *reservedNode
37 en *enumNode
38 enDecls []*enumElement
39 env *enumValueNode
40 extend *extendNode
41 extDecls []*extendElement
42 svc *serviceNode
43 svcDecls []*serviceElement
44 mtd *methodNode
45 rpcType *rpcTypeNode
46 opts []*optionNode
47 optNm []*optionNamePartNode
48 rngs []*rangeNode
49 names []*stringLiteralNode
50 sl []valueNode
51 agg []*aggregateEntryNode
52 aggName *aggregateNameNode
53 v valueNode
54 str *stringLiteralNode
55 i *negativeIntLiteralNode
56 ui *intLiteralNode
57 f *floatLiteralNode
58 id *identNode
59 b *basicNode
60 err error
61}
62
63const _STRING_LIT = 57346
64const _INT_LIT = 57347
65const _FLOAT_LIT = 57348
66const _NAME = 57349
67const _FQNAME = 57350
68const _TYPENAME = 57351
69const _SYNTAX = 57352
70const _IMPORT = 57353
71const _WEAK = 57354
72const _PUBLIC = 57355
73const _PACKAGE = 57356
74const _OPTION = 57357
75const _TRUE = 57358
76const _FALSE = 57359
77const _INF = 57360
78const _NAN = 57361
79const _REPEATED = 57362
80const _OPTIONAL = 57363
81const _REQUIRED = 57364
82const _DOUBLE = 57365
83const _FLOAT = 57366
84const _INT32 = 57367
85const _INT64 = 57368
86const _UINT32 = 57369
87const _UINT64 = 57370
88const _SINT32 = 57371
89const _SINT64 = 57372
90const _FIXED32 = 57373
91const _FIXED64 = 57374
92const _SFIXED32 = 57375
93const _SFIXED64 = 57376
94const _BOOL = 57377
95const _STRING = 57378
96const _BYTES = 57379
97const _GROUP = 57380
98const _ONEOF = 57381
99const _MAP = 57382
100const _EXTENSIONS = 57383
101const _TO = 57384
102const _MAX = 57385
103const _RESERVED = 57386
104const _ENUM = 57387
105const _MESSAGE = 57388
106const _EXTEND = 57389
107const _SERVICE = 57390
108const _RPC = 57391
109const _STREAM = 57392
110const _RETURNS = 57393
111const _ERROR = 57394
112
113var protoToknames = [...]string{
114 "$end",
115 "error",
116 "$unk",
117 "_STRING_LIT",
118 "_INT_LIT",
119 "_FLOAT_LIT",
120 "_NAME",
121 "_FQNAME",
122 "_TYPENAME",
123 "_SYNTAX",
124 "_IMPORT",
125 "_WEAK",
126 "_PUBLIC",
127 "_PACKAGE",
128 "_OPTION",
129 "_TRUE",
130 "_FALSE",
131 "_INF",
132 "_NAN",
133 "_REPEATED",
134 "_OPTIONAL",
135 "_REQUIRED",
136 "_DOUBLE",
137 "_FLOAT",
138 "_INT32",
139 "_INT64",
140 "_UINT32",
141 "_UINT64",
142 "_SINT32",
143 "_SINT64",
144 "_FIXED32",
145 "_FIXED64",
146 "_SFIXED32",
147 "_SFIXED64",
148 "_BOOL",
149 "_STRING",
150 "_BYTES",
151 "_GROUP",
152 "_ONEOF",
153 "_MAP",
154 "_EXTENSIONS",
155 "_TO",
156 "_MAX",
157 "_RESERVED",
158 "_ENUM",
159 "_MESSAGE",
160 "_EXTEND",
161 "_SERVICE",
162 "_RPC",
163 "_STREAM",
164 "_RETURNS",
165 "_ERROR",
166 "'='",
167 "';'",
168 "':'",
169 "'{'",
170 "'}'",
171 "'\\\\'",
172 "'/'",
173 "'?'",
174 "'.'",
175 "','",
176 "'>'",
177 "'<'",
178 "'+'",
179 "'-'",
180 "'('",
181 "')'",
182 "'['",
183 "']'",
184 "'*'",
185 "'&'",
186 "'^'",
187 "'%'",
188 "'$'",
189 "'#'",
190 "'@'",
191 "'!'",
192 "'~'",
193 "'`'",
194}
195var protoStatenames = [...]string{}
196
197const protoEofCode = 1
198const protoErrCode = 2
199const protoInitialStackSize = 16
200
201//line proto.y:937
202
203//line yacctab:1
204var protoExca = [...]int{
205 -1, 1,
206 1, -1,
207 -2, 0,
208}
209
210const protoPrivate = 57344
211
212const protoLast = 2050
213
214var protoAct = [...]int{
215
216 120, 8, 288, 8, 8, 386, 264, 80, 128, 113,
217 159, 160, 265, 271, 103, 196, 185, 112, 100, 101,
218 29, 171, 8, 28, 75, 119, 99, 114, 79, 153,
219 137, 148, 266, 184, 24, 139, 306, 255, 77, 78,
220 319, 82, 306, 83, 389, 86, 87, 306, 318, 74,
221 378, 306, 98, 306, 306, 363, 317, 306, 306, 361,
222 306, 359, 351, 222, 379, 338, 337, 366, 307, 328,
223 377, 224, 325, 322, 304, 280, 278, 286, 223, 380,
224 315, 356, 367, 197, 329, 90, 243, 326, 323, 305,
225 281, 279, 297, 140, 111, 154, 27, 197, 249, 214,
226 209, 106, 188, 336, 246, 276, 241, 330, 240, 211,
227 105, 173, 245, 144, 242, 287, 224, 208, 381, 150,
228 382, 149, 176, 146, 327, 207, 324, 163, 16, 226,
229 94, 93, 92, 91, 177, 179, 181, 16, 199, 140,
230 79, 75, 85, 392, 199, 383, 368, 199, 374, 183,
231 78, 77, 373, 154, 16, 187, 191, 372, 199, 144,
232 198, 365, 157, 174, 85, 191, 74, 156, 355, 146,
233 189, 206, 212, 150, 193, 149, 388, 354, 204, 201,
234 163, 210, 203, 14, 333, 158, 15, 16, 157, 85,
235 85, 88, 97, 156, 213, 16, 202, 335, 215, 216,
236 217, 218, 219, 220, 308, 262, 261, 4, 14, 244,
237 260, 15, 16, 376, 96, 259, 258, 18, 17, 19,
238 20, 257, 254, 256, 221, 339, 13, 272, 252, 194,
239 105, 75, 163, 248, 388, 275, 250, 390, 283, 95,
240 84, 267, 18, 17, 19, 20, 89, 23, 247, 225,
241 352, 13, 268, 303, 168, 169, 27, 186, 290, 302,
242 198, 282, 277, 285, 295, 301, 206, 170, 300, 5,
243 299, 272, 105, 22, 163, 163, 284, 117, 11, 275,
244 11, 11, 165, 166, 310, 312, 313, 75, 314, 75,
245 269, 22, 27, 155, 298, 167, 311, 186, 316, 11,
246 25, 26, 263, 168, 293, 320, 85, 206, 27, 152,
247 12, 147, 331, 75, 75, 163, 163, 3, 141, 332,
248 21, 115, 10, 138, 10, 10, 118, 195, 142, 105,
249 345, 75, 206, 347, 75, 123, 349, 75, 190, 105,
250 105, 163, 346, 10, 270, 348, 116, 9, 350, 9,
251 9, 122, 357, 121, 358, 273, 176, 353, 176, 369,
252 176, 334, 163, 161, 163, 290, 292, 104, 9, 206,
253 206, 340, 342, 102, 375, 75, 162, 227, 163, 163,
254 172, 385, 7, 387, 6, 2, 387, 384, 75, 1,
255 0, 391, 27, 107, 110, 31, 0, 0, 32, 33,
256 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
257 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
258 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
259 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
260 0, 0, 0, 0, 106, 0, 0, 0, 0, 0,
261 0, 0, 294, 108, 109, 0, 0, 0, 291, 27,
262 107, 110, 31, 0, 0, 32, 33, 34, 35, 36,
263 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
264 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
265 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
266 67, 68, 69, 70, 71, 72, 73, 0, 0, 0,
267 0, 106, 0, 0, 0, 0, 0, 0, 0, 253,
268 108, 109, 0, 0, 251, 27, 107, 110, 31, 0,
269 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
270 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
271 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
272 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
273 71, 72, 73, 0, 0, 0, 0, 106, 0, 0,
274 0, 0, 0, 0, 0, 343, 108, 109, 27, 107,
275 110, 31, 0, 0, 32, 33, 34, 35, 36, 37,
276 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
277 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
278 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
279 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
280 106, 0, 0, 0, 0, 0, 0, 0, 341, 108,
281 109, 27, 107, 110, 31, 0, 0, 32, 33, 34,
282 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
283 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
284 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
285 65, 66, 67, 68, 69, 70, 71, 72, 73, 0,
286 0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
287 0, 31, 108, 109, 32, 33, 34, 35, 36, 37,
288 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
289 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
290 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
291 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
292 0, 0, 0, 0, 0, 0, 0, 371, 0, 0,
293 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
294 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
295 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
296 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
297 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
298 0, 0, 0, 0, 0, 0, 0, 370, 0, 0,
299 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
300 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
301 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
302 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
303 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, 0, 344, 0, 0,
305 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
306 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
307 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
308 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
309 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0, 321, 0, 0,
311 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
312 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
313 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
314 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
315 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 296, 0, 0,
317 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
318 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
319 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
320 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
321 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
322 0, 205, 0, 0, 0, 0, 0, 0, 0, 0,
323 0, 31, 0, 164, 32, 33, 34, 35, 36, 37,
324 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
325 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
326 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
327 68, 69, 70, 71, 72, 73, 228, 229, 230, 231,
328 232, 233, 234, 235, 236, 237, 238, 239, 0, 0,
329 0, 31, 30, 164, 32, 33, 34, 35, 36, 37,
330 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
331 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
332 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
333 68, 69, 70, 71, 72, 73, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 76, 31, 30, 81, 32, 33, 34, 35, 36,
336 133, 38, 39, 40, 41, 127, 126, 125, 45, 46,
337 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
338 57, 58, 59, 60, 134, 135, 132, 64, 65, 136,
339 129, 130, 131, 70, 71, 72, 73, 0, 0, 124,
340 0, 0, 364, 31, 30, 81, 32, 33, 34, 35,
341 36, 133, 38, 39, 40, 41, 127, 126, 125, 45,
342 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
343 56, 57, 58, 59, 60, 134, 135, 132, 64, 65,
344 136, 129, 130, 131, 70, 71, 72, 73, 0, 0,
345 124, 0, 0, 362, 31, 30, 81, 32, 33, 34,
346 35, 36, 133, 38, 39, 40, 41, 127, 126, 125,
347 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
348 55, 56, 57, 58, 59, 60, 134, 135, 132, 64,
349 65, 136, 129, 130, 131, 70, 71, 72, 73, 0,
350 0, 124, 0, 0, 360, 31, 30, 81, 32, 33,
351 34, 35, 36, 133, 38, 39, 40, 41, 42, 43,
352 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
353 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
354 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
355 0, 0, 274, 0, 0, 309, 31, 30, 81, 32,
356 33, 34, 35, 36, 37, 38, 39, 40, 41, 127,
357 126, 125, 45, 46, 47, 48, 49, 50, 51, 52,
358 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
359 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
360 73, 0, 0, 151, 0, 0, 200, 31, 30, 81,
361 32, 33, 34, 35, 36, 133, 38, 39, 40, 41,
362 127, 126, 125, 45, 46, 47, 48, 49, 50, 51,
363 52, 53, 54, 55, 56, 57, 58, 59, 60, 134,
364 135, 132, 64, 65, 136, 129, 130, 131, 70, 71,
365 72, 73, 0, 0, 124, 31, 0, 175, 32, 33,
366 34, 35, 36, 133, 38, 39, 40, 41, 42, 43,
367 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
368 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
369 64, 65, 145, 67, 68, 69, 70, 71, 72, 73,
370 0, 0, 143, 0, 0, 192, 31, 30, 81, 32,
371 33, 34, 35, 36, 133, 38, 39, 40, 41, 127,
372 126, 125, 45, 46, 47, 48, 49, 50, 51, 52,
373 53, 54, 55, 56, 57, 58, 59, 60, 134, 135,
374 132, 64, 65, 136, 129, 130, 131, 70, 71, 72,
375 73, 0, 0, 124, 31, 30, 81, 32, 33, 34,
376 35, 36, 133, 38, 39, 40, 41, 42, 43, 44,
377 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
378 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
379 65, 66, 67, 68, 69, 70, 71, 72, 73, 0,
380 0, 274, 31, 30, 81, 32, 33, 34, 35, 36,
381 37, 38, 39, 40, 41, 127, 126, 125, 45, 46,
382 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
383 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
384 67, 68, 69, 70, 71, 72, 73, 31, 0, 151,
385 32, 33, 34, 35, 36, 133, 38, 39, 40, 41,
386 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
387 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
388 62, 63, 64, 65, 145, 67, 68, 69, 70, 71,
389 72, 73, 0, 0, 143, 31, 30, 81, 32, 33,
390 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
391 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
392 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
393 64, 65, 66, 67, 68, 69, 70, 71, 289, 73,
394 31, 30, 81, 32, 33, 34, 35, 36, 37, 38,
395 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
396 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
397 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
398 69, 70, 71, 72, 73, 31, 30, 81, 32, 33,
399 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
400 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
401 54, 55, 56, 57, 58, 59, 182, 61, 62, 63,
402 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
403 31, 30, 81, 32, 33, 34, 35, 36, 37, 38,
404 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
405 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
406 59, 180, 61, 62, 63, 64, 65, 66, 67, 68,
407 69, 70, 71, 72, 73, 31, 30, 81, 32, 33,
408 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
409 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
410 54, 55, 56, 57, 58, 59, 178, 61, 62, 63,
411 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
412 31, 30, 0, 32, 33, 34, 35, 36, 37, 38,
413 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
414 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
415 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
416 69, 70, 71, 72, 73, 31, 0, 0, 32, 33,
417 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
418 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
419 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
420 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
421}
422var protoPact = [...]int{
423
424 197, -1000, 172, 172, 194, -1000, -1000, -1000, -1000, -1000,
425 -1000, -1000, -1000, -1000, 288, 1953, 1124, 1998, 1998, 1773,
426 1998, 172, -1000, 304, 186, 304, 304, -1000, 137, -1000,
427 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
428 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
429 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
430 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
431 -1000, -1000, -1000, -1000, 193, -1000, 1773, 77, 76, 75,
432 -1000, -1000, 74, 185, -1000, -1000, 160, 138, -1000, 647,
433 26, 1539, 1680, 1635, 113, -1000, -1000, -1000, 131, -1000,
434 -1000, 302, -1000, -1000, -1000, -1000, 1064, -1000, 277, 249,
435 -1000, 102, 1440, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
436 -1000, -1000, -1000, -1000, -1000, 1908, 1863, 1818, 1998, 1998,
437 1998, 1773, 292, 1124, 1998, 38, 252, -1000, 1488, -1000,
438 -1000, -1000, -1000, -1000, 176, 92, -1000, 1389, -1000, -1000,
439 -1000, -1000, 139, -1000, -1000, -1000, -1000, 1998, -1000, 1004,
440 -1000, 63, 45, -1000, 1953, -1000, -1000, -1000, -1000, -1000,
441 -1000, -1000, 102, -1000, 32, -1000, -1000, 1998, 1998, 1998,
442 1998, 1998, 1998, 171, 9, -1000, 207, 73, 1091, 54,
443 52, 302, -1000, -1000, 81, 50, -1000, 206, 191, 298,
444 -1000, -1000, -1000, -1000, 31, -1000, -1000, -1000, -1000, 455,
445 -1000, 1064, -33, -1000, 1773, 168, 163, 162, 157, 153,
446 152, 297, -1000, 1124, 292, 247, 1587, 43, -1000, -1000,
447 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
448 -1000, -1000, 304, 22, 21, 78, -1000, 233, 72, 1728,
449 -1000, 388, -1000, 1064, 944, -1000, 24, 289, 265, 263,
450 260, 254, 248, 20, -2, -1000, 151, -1000, -1000, -1000,
451 1338, -1000, -1000, -1000, -1000, 1998, 1773, 302, -1000, 1124,
452 -1000, 1124, -1000, -1000, -1000, -1000, -1000, -1000, 12, 1773,
453 -1000, -1000, -14, -1000, 1064, 884, -1000, -1000, 19, 70,
454 18, 68, 15, 51, -1000, 1124, 1124, 130, 647, -1000,
455 -1000, 144, 40, -4, -5, 174, -1000, -1000, 584, 521,
456 824, -1000, -1000, 1124, 1539, -1000, 1124, 1539, -1000, 1124,
457 1539, -8, -1000, -1000, -1000, 245, 1998, 123, 114, 14,
458 -1000, 1064, -1000, 1064, -1000, -9, 1287, -11, 1236, -15,
459 1185, 107, 13, 93, -1000, -1000, 1728, 764, 704, 103,
460 -1000, 98, -1000, 94, -1000, -1000, -1000, 1124, 208, 2,
461 -1000, -1000, -1000, -1000, -1000, -20, 10, 64, 91, -1000,
462 1124, -1000, 122, -1000, -26, 180, -1000, -1000, -1000, 89,
463 -1000, -1000, -1000,
464}
465var protoPgo = [...]int{
466
467 0, 389, 385, 269, 317, 384, 382, 0, 12, 6,
468 5, 381, 32, 21, 380, 52, 26, 18, 20, 7,
469 8, 377, 376, 14, 373, 367, 366, 10, 11, 363,
470 27, 355, 353, 25, 351, 346, 9, 17, 13, 344,
471 338, 335, 328, 30, 16, 33, 15, 327, 326, 321,
472 35, 323, 318, 277, 31, 311, 19, 310, 29, 309,
473 293, 2,
474}
475var protoR1 = [...]int{
476
477 0, 1, 1, 1, 1, 4, 4, 3, 3, 3,
478 3, 3, 3, 3, 3, 2, 5, 5, 5, 6,
479 19, 19, 7, 12, 12, 12, 13, 13, 14, 14,
480 15, 15, 16, 16, 16, 16, 16, 24, 24, 23,
481 25, 25, 25, 25, 25, 56, 56, 17, 27, 27,
482 27, 28, 28, 28, 29, 29, 29, 29, 29, 29,
483 29, 22, 22, 26, 26, 26, 26, 26, 26, 20,
484 20, 30, 30, 30, 30, 30, 30, 30, 30, 9,
485 9, 8, 33, 33, 33, 32, 39, 39, 39, 38,
486 38, 38, 31, 31, 34, 34, 21, 21, 21, 21,
487 21, 21, 21, 21, 21, 21, 21, 21, 48, 48,
488 45, 45, 44, 44, 44, 47, 47, 46, 46, 46,
489 46, 46, 46, 46, 41, 41, 42, 42, 43, 40,
490 40, 49, 51, 51, 51, 50, 50, 50, 50, 52,
491 52, 52, 52, 35, 37, 37, 37, 36, 36, 36,
492 36, 36, 36, 36, 36, 36, 36, 36, 53, 55,
493 55, 55, 54, 54, 54, 57, 59, 59, 59, 58,
494 58, 58, 60, 60, 61, 61, 11, 11, 11, 10,
495 10, 18, 18, 18, 18, 18, 18, 18, 18, 18,
496 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
497 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
498 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
499 18, 18, 18, 18,
500}
501var protoR2 = [...]int{
502
503 0, 1, 1, 2, 0, 2, 1, 1, 1, 1,
504 1, 1, 1, 1, 1, 4, 3, 4, 4, 3,
505 1, 1, 5, 1, 3, 4, 1, 2, 1, 4,
506 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
507 1, 2, 2, 2, 2, 1, 2, 3, 1, 2,
508 0, 1, 2, 2, 3, 4, 5, 3, 2, 5,
509 4, 1, 3, 1, 3, 3, 3, 5, 5, 1,
510 1, 6, 6, 6, 5, 9, 9, 9, 8, 3,
511 1, 3, 8, 8, 8, 5, 2, 1, 0, 1,
512 1, 1, 5, 8, 10, 13, 1, 1, 1, 1,
513 1, 1, 1, 1, 1, 1, 1, 1, 3, 6,
514 3, 1, 1, 3, 3, 3, 1, 1, 1, 3,
515 3, 3, 3, 3, 3, 1, 3, 1, 3, 3,
516 1, 5, 2, 1, 0, 1, 1, 1, 1, 4,
517 7, 4, 7, 5, 2, 1, 0, 1, 1, 1,
518 1, 1, 1, 1, 1, 1, 1, 1, 5, 2,
519 1, 0, 1, 1, 1, 5, 2, 1, 0, 1,
520 1, 1, 10, 12, 2, 1, 2, 1, 0, 1,
521 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
522 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
523 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
524 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
525 1, 1, 1, 1,
526}
527var protoChk = [...]int{
528
529 -1000, -1, -2, -4, 10, -3, -5, -6, -7, -35,
530 -49, -53, -57, 54, 11, 14, 15, 46, 45, 47,
531 48, -4, -3, 53, -56, 12, 13, 4, -19, -18,
532 8, 7, 10, 11, 12, 13, 14, 15, 16, 17,
533 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
534 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
535 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
536 48, 49, 50, 51, -12, -19, 67, -18, -18, -20,
537 -19, 9, -18, -56, 54, 4, -56, -56, 54, 53,
538 -20, 56, 56, 56, 56, 54, 54, 54, -15, -16,
539 -17, -56, -24, -23, -25, -18, 56, 5, 65, 66,
540 6, 68, -37, -36, -30, -49, -35, -53, -48, -33,
541 -7, -32, -34, -41, 54, 22, 21, 20, -20, 45,
542 46, 47, 41, 15, 39, 40, 44, -43, -51, -50,
543 -7, -52, -42, 54, -18, 44, -43, -55, -54, -30,
544 -33, 54, -59, -58, -7, -60, 54, 49, 54, -27,
545 -28, -29, -22, -18, 69, 5, 6, 18, 5, 6,
546 18, -13, -14, 9, 61, 57, -36, -20, 38, -20,
547 38, -20, 38, -18, -45, -44, 5, -18, 64, -45,
548 -40, -56, 57, -50, 53, -47, -46, 5, -23, 66,
549 57, -54, 57, -58, -18, 57, -28, 62, 54, 55,
550 -17, 64, -19, -13, 67, -18, -18, -18, -18, -18,
551 -18, 53, 54, 69, 62, 42, 56, -21, 25, 26,
552 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
553 54, 54, 62, 5, -23, 62, 54, 42, 42, 67,
554 -16, 69, -17, 64, -27, 70, -20, 53, 53, 53,
555 53, 53, 53, 5, -9, -8, -12, -44, 5, 43,
556 -39, -38, -7, -31, 54, -20, 62, -56, 54, 69,
557 54, 69, -46, 5, 43, -23, 5, 43, -61, 50,
558 -20, 70, -26, -15, 64, -27, 63, 68, 5, 5,
559 5, 5, 5, 5, 54, 69, 62, 70, 53, 57,
560 -38, -18, -20, -9, -9, 68, -20, 70, 62, 54,
561 -27, 63, 54, 69, 56, 54, 69, 56, 54, 69,
562 56, -9, -8, 54, -15, 53, 63, 70, 70, 51,
563 -15, 64, -15, 64, 63, -9, -37, -9, -37, -9,
564 -37, 70, 5, -18, 54, 54, 67, -27, -27, 70,
565 57, 70, 57, 70, 57, 54, 54, 69, 53, -61,
566 63, 63, 54, 54, 54, -9, 5, 68, 70, 54,
567 69, 54, 56, 54, -9, -11, -10, -7, 54, 70,
568 57, -10, 54,
569}
570var protoDef = [...]int{
571
572 4, -2, 1, 2, 0, 6, 7, 8, 9, 10,
573 11, 12, 13, 14, 0, 0, 0, 0, 0, 0,
574 0, 3, 5, 0, 0, 0, 0, 45, 0, 20,
575 21, 181, 182, 183, 184, 185, 186, 187, 188, 189,
576 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
577 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
578 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
579 220, 221, 222, 223, 0, 23, 0, 0, 0, 0,
580 69, 70, 0, 0, 16, 46, 0, 0, 19, 0,
581 0, 146, 134, 161, 168, 15, 17, 18, 0, 30,
582 31, 32, 33, 34, 35, 36, 50, 37, 0, 0,
583 40, 24, 0, 145, 147, 148, 149, 150, 151, 152,
584 153, 154, 155, 156, 157, 0, 0, 0, 0, 0,
585 0, 0, 213, 187, 0, 212, 216, 125, 0, 133,
586 135, 136, 137, 138, 0, 216, 127, 0, 160, 162,
587 163, 164, 0, 167, 169, 170, 171, 0, 22, 0,
588 48, 51, 0, 61, 0, 38, 42, 43, 39, 41,
589 44, 25, 26, 28, 0, 143, 144, 0, 0, 0,
590 0, 0, 0, 0, 0, 111, 112, 0, 0, 0,
591 0, 130, 131, 132, 0, 0, 116, 117, 118, 0,
592 158, 159, 165, 166, 0, 47, 49, 52, 53, 0,
593 58, 50, 0, 27, 0, 0, 0, 0, 0, 0,
594 0, 0, 108, 0, 0, 0, 88, 0, 96, 97,
595 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
596 124, 128, 0, 0, 0, 0, 126, 0, 0, 0,
597 54, 0, 57, 50, 0, 62, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 80, 0, 110, 113, 114,
599 0, 87, 89, 90, 91, 0, 0, 129, 139, 0,
600 141, 0, 115, 119, 122, 120, 121, 123, 0, 222,
601 175, 55, 0, 63, 50, 0, 60, 29, 0, 0,
602 0, 0, 0, 0, 74, 0, 0, 0, 0, 85,
603 86, 0, 0, 0, 0, 0, 174, 56, 0, 0,
604 0, 59, 71, 0, 146, 72, 0, 146, 73, 0,
605 146, 0, 79, 109, 81, 0, 0, 0, 0, 0,
606 64, 50, 65, 50, 66, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 140, 142, 0, 0, 0, 0,
608 82, 0, 83, 0, 84, 78, 92, 0, 0, 0,
609 67, 68, 75, 76, 77, 0, 0, 0, 0, 94,
610 0, 172, 178, 93, 0, 0, 177, 179, 180, 0,
611 173, 176, 95,
612}
613var protoTok1 = [...]int{
614
615 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
616 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
617 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
618 3, 3, 3, 78, 3, 76, 75, 74, 72, 3,
619 67, 68, 71, 65, 62, 66, 61, 59, 3, 3,
620 3, 3, 3, 3, 3, 3, 3, 3, 55, 54,
621 64, 53, 63, 60, 77, 3, 3, 3, 3, 3,
622 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
623 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
624 3, 69, 58, 70, 73, 3, 80, 3, 3, 3,
625 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
626 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
627 3, 3, 3, 56, 3, 57, 79,
628}
629var protoTok2 = [...]int{
630
631 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
632 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
633 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
634 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
635 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
636 52,
637}
638var protoTok3 = [...]int{
639 0,
640}
641
642var protoErrorMessages = [...]struct {
643 state int
644 token int
645 msg string
646}{}
647
648//line yaccpar:1
649
650/* parser for yacc output */
651
652var (
653 protoDebug = 0
654 protoErrorVerbose = false
655)
656
657type protoLexer interface {
658 Lex(lval *protoSymType) int
659 Error(s string)
660}
661
662type protoParser interface {
663 Parse(protoLexer) int
664 Lookahead() int
665}
666
667type protoParserImpl struct {
668 lval protoSymType
669 stack [protoInitialStackSize]protoSymType
670 char int
671}
672
673func (p *protoParserImpl) Lookahead() int {
674 return p.char
675}
676
677func protoNewParser() protoParser {
678 return &protoParserImpl{}
679}
680
681const protoFlag = -1000
682
683func protoTokname(c int) string {
684 if c >= 1 && c-1 < len(protoToknames) {
685 if protoToknames[c-1] != "" {
686 return protoToknames[c-1]
687 }
688 }
689 return __yyfmt__.Sprintf("tok-%v", c)
690}
691
692func protoStatname(s int) string {
693 if s >= 0 && s < len(protoStatenames) {
694 if protoStatenames[s] != "" {
695 return protoStatenames[s]
696 }
697 }
698 return __yyfmt__.Sprintf("state-%v", s)
699}
700
701func protoErrorMessage(state, lookAhead int) string {
702 const TOKSTART = 4
703
704 if !protoErrorVerbose {
705 return "syntax error"
706 }
707
708 for _, e := range protoErrorMessages {
709 if e.state == state && e.token == lookAhead {
710 return "syntax error: " + e.msg
711 }
712 }
713
714 res := "syntax error: unexpected " + protoTokname(lookAhead)
715
716 // To match Bison, suggest at most four expected tokens.
717 expected := make([]int, 0, 4)
718
719 // Look for shiftable tokens.
720 base := protoPact[state]
721 for tok := TOKSTART; tok-1 < len(protoToknames); tok++ {
722 if n := base + tok; n >= 0 && n < protoLast && protoChk[protoAct[n]] == tok {
723 if len(expected) == cap(expected) {
724 return res
725 }
726 expected = append(expected, tok)
727 }
728 }
729
730 if protoDef[state] == -2 {
731 i := 0
732 for protoExca[i] != -1 || protoExca[i+1] != state {
733 i += 2
734 }
735
736 // Look for tokens that we accept or reduce.
737 for i += 2; protoExca[i] >= 0; i += 2 {
738 tok := protoExca[i]
739 if tok < TOKSTART || protoExca[i+1] == 0 {
740 continue
741 }
742 if len(expected) == cap(expected) {
743 return res
744 }
745 expected = append(expected, tok)
746 }
747
748 // If the default action is to accept or reduce, give up.
749 if protoExca[i+1] != 0 {
750 return res
751 }
752 }
753
754 for i, tok := range expected {
755 if i == 0 {
756 res += ", expecting "
757 } else {
758 res += " or "
759 }
760 res += protoTokname(tok)
761 }
762 return res
763}
764
765func protolex1(lex protoLexer, lval *protoSymType) (char, token int) {
766 token = 0
767 char = lex.Lex(lval)
768 if char <= 0 {
769 token = protoTok1[0]
770 goto out
771 }
772 if char < len(protoTok1) {
773 token = protoTok1[char]
774 goto out
775 }
776 if char >= protoPrivate {
777 if char < protoPrivate+len(protoTok2) {
778 token = protoTok2[char-protoPrivate]
779 goto out
780 }
781 }
782 for i := 0; i < len(protoTok3); i += 2 {
783 token = protoTok3[i+0]
784 if token == char {
785 token = protoTok3[i+1]
786 goto out
787 }
788 }
789
790out:
791 if token == 0 {
792 token = protoTok2[1] /* unknown char */
793 }
794 if protoDebug >= 3 {
795 __yyfmt__.Printf("lex %s(%d)\n", protoTokname(token), uint(char))
796 }
797 return char, token
798}
799
800func protoParse(protolex protoLexer) int {
801 return protoNewParser().Parse(protolex)
802}
803
804func (protorcvr *protoParserImpl) Parse(protolex protoLexer) int {
805 var proton int
806 var protoVAL protoSymType
807 var protoDollar []protoSymType
808 _ = protoDollar // silence set and not used
809 protoS := protorcvr.stack[:]
810
811 Nerrs := 0 /* number of errors */
812 Errflag := 0 /* error recovery flag */
813 protostate := 0
814 protorcvr.char = -1
815 prototoken := -1 // protorcvr.char translated into internal numbering
816 defer func() {
817 // Make sure we report no lookahead when not parsing.
818 protostate = -1
819 protorcvr.char = -1
820 prototoken = -1
821 }()
822 protop := -1
823 goto protostack
824
825ret0:
826 return 0
827
828ret1:
829 return 1
830
831protostack:
832 /* put a state and value onto the stack */
833 if protoDebug >= 4 {
834 __yyfmt__.Printf("char %v in %v\n", protoTokname(prototoken), protoStatname(protostate))
835 }
836
837 protop++
838 if protop >= len(protoS) {
839 nyys := make([]protoSymType, len(protoS)*2)
840 copy(nyys, protoS)
841 protoS = nyys
842 }
843 protoS[protop] = protoVAL
844 protoS[protop].yys = protostate
845
846protonewstate:
847 proton = protoPact[protostate]
848 if proton <= protoFlag {
849 goto protodefault /* simple state */
850 }
851 if protorcvr.char < 0 {
852 protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
853 }
854 proton += prototoken
855 if proton < 0 || proton >= protoLast {
856 goto protodefault
857 }
858 proton = protoAct[proton]
859 if protoChk[proton] == prototoken { /* valid shift */
860 protorcvr.char = -1
861 prototoken = -1
862 protoVAL = protorcvr.lval
863 protostate = proton
864 if Errflag > 0 {
865 Errflag--
866 }
867 goto protostack
868 }
869
870protodefault:
871 /* default state action */
872 proton = protoDef[protostate]
873 if proton == -2 {
874 if protorcvr.char < 0 {
875 protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
876 }
877
878 /* look through exception table */
879 xi := 0
880 for {
881 if protoExca[xi+0] == -1 && protoExca[xi+1] == protostate {
882 break
883 }
884 xi += 2
885 }
886 for xi += 2; ; xi += 2 {
887 proton = protoExca[xi+0]
888 if proton < 0 || proton == prototoken {
889 break
890 }
891 }
892 proton = protoExca[xi+1]
893 if proton < 0 {
894 goto ret0
895 }
896 }
897 if proton == 0 {
898 /* error ... attempt to resume parsing */
899 switch Errflag {
900 case 0: /* brand new error */
901 protolex.Error(protoErrorMessage(protostate, prototoken))
902 Nerrs++
903 if protoDebug >= 1 {
904 __yyfmt__.Printf("%s", protoStatname(protostate))
905 __yyfmt__.Printf(" saw %s\n", protoTokname(prototoken))
906 }
907 fallthrough
908
909 case 1, 2: /* incompletely recovered error ... try again */
910 Errflag = 3
911
912 /* find a state where "error" is a legal shift action */
913 for protop >= 0 {
914 proton = protoPact[protoS[protop].yys] + protoErrCode
915 if proton >= 0 && proton < protoLast {
916 protostate = protoAct[proton] /* simulate a shift of "error" */
917 if protoChk[protostate] == protoErrCode {
918 goto protostack
919 }
920 }
921
922 /* the current p has no shift on "error", pop stack */
923 if protoDebug >= 2 {
924 __yyfmt__.Printf("error recovery pops state %d\n", protoS[protop].yys)
925 }
926 protop--
927 }
928 /* there is no state on the stack with an error shift ... abort */
929 goto ret1
930
931 case 3: /* no shift yet; clobber input char */
932 if protoDebug >= 2 {
933 __yyfmt__.Printf("error recovery discards %s\n", protoTokname(prototoken))
934 }
935 if prototoken == protoEofCode {
936 goto ret1
937 }
938 protorcvr.char = -1
939 prototoken = -1
940 goto protonewstate /* try again in the same state */
941 }
942 }
943
944 /* reduction by production proton */
945 if protoDebug >= 2 {
946 __yyfmt__.Printf("reduce %v in:\n\t%v\n", proton, protoStatname(protostate))
947 }
948
949 protont := proton
950 protopt := protop
951 _ = protopt // guard against "declared and not used"
952
953 protop -= protoR2[proton]
954 // protop is now the index of $0. Perform the default action. Iff the
955 // reduced production is ε, $1 is possibly out of range.
956 if protop+1 >= len(protoS) {
957 nyys := make([]protoSymType, len(protoS)*2)
958 copy(nyys, protoS)
959 protoS = nyys
960 }
961 protoVAL = protoS[protop+1]
962
963 /* consult goto table to find next state */
964 proton = protoR1[proton]
965 protog := protoPgo[proton]
966 protoj := protog + protoS[protop].yys + 1
967
968 if protoj >= protoLast {
969 protostate = protoAct[protog]
970 } else {
971 protostate = protoAct[protoj]
972 if protoChk[protostate] != -proton {
973 protostate = protoAct[protog]
974 }
975 }
976 // dummy call; replaced with literal code
977 switch protont {
978
979 case 1:
980 protoDollar = protoS[protopt-1 : protopt+1]
981//line proto.y:114
982 {
983 protoVAL.file = &fileNode{syntax: protoDollar[1].syn}
984 protoVAL.file.setRange(protoDollar[1].syn, protoDollar[1].syn)
985 protolex.(*protoLex).res = protoVAL.file
986 }
987 case 2:
988 protoDollar = protoS[protopt-1 : protopt+1]
989//line proto.y:119
990 {
991 protoVAL.file = &fileNode{decls: protoDollar[1].fileDecls}
992 if len(protoDollar[1].fileDecls) > 0 {
993 protoVAL.file.setRange(protoDollar[1].fileDecls[0], protoDollar[1].fileDecls[len(protoDollar[1].fileDecls)-1])
994 }
995 protolex.(*protoLex).res = protoVAL.file
996 }
997 case 3:
998 protoDollar = protoS[protopt-2 : protopt+1]
999//line proto.y:126
1000 {
1001 protoVAL.file = &fileNode{syntax: protoDollar[1].syn, decls: protoDollar[2].fileDecls}
1002 var end node
1003 if len(protoDollar[2].fileDecls) > 0 {
1004 end = protoDollar[2].fileDecls[len(protoDollar[2].fileDecls)-1]
1005 } else {
1006 end = protoDollar[1].syn
1007 }
1008 protoVAL.file.setRange(protoDollar[1].syn, end)
1009 protolex.(*protoLex).res = protoVAL.file
1010 }
1011 case 4:
1012 protoDollar = protoS[protopt-0 : protopt+1]
1013//line proto.y:137
1014 {
1015 }
1016 case 5:
1017 protoDollar = protoS[protopt-2 : protopt+1]
1018//line proto.y:140
1019 {
1020 protoVAL.fileDecls = append(protoDollar[1].fileDecls, protoDollar[2].fileDecls...)
1021 }
1022 case 7:
1023 protoDollar = protoS[protopt-1 : protopt+1]
1024//line proto.y:145
1025 {
1026 protoVAL.fileDecls = []*fileElement{{imp: protoDollar[1].imprt}}
1027 }
1028 case 8:
1029 protoDollar = protoS[protopt-1 : protopt+1]
1030//line proto.y:148
1031 {
1032 protoVAL.fileDecls = []*fileElement{{pkg: protoDollar[1].pkg}}
1033 }
1034 case 9:
1035 protoDollar = protoS[protopt-1 : protopt+1]
1036//line proto.y:151
1037 {
1038 protoVAL.fileDecls = []*fileElement{{option: protoDollar[1].opts[0]}}
1039 }
1040 case 10:
1041 protoDollar = protoS[protopt-1 : protopt+1]
1042//line proto.y:154
1043 {
1044 protoVAL.fileDecls = []*fileElement{{message: protoDollar[1].msg}}
1045 }
1046 case 11:
1047 protoDollar = protoS[protopt-1 : protopt+1]
1048//line proto.y:157
1049 {
1050 protoVAL.fileDecls = []*fileElement{{enum: protoDollar[1].en}}
1051 }
1052 case 12:
1053 protoDollar = protoS[protopt-1 : protopt+1]
1054//line proto.y:160
1055 {
1056 protoVAL.fileDecls = []*fileElement{{extend: protoDollar[1].extend}}
1057 }
1058 case 13:
1059 protoDollar = protoS[protopt-1 : protopt+1]
1060//line proto.y:163
1061 {
1062 protoVAL.fileDecls = []*fileElement{{service: protoDollar[1].svc}}
1063 }
1064 case 14:
1065 protoDollar = protoS[protopt-1 : protopt+1]
1066//line proto.y:166
1067 {
1068 protoVAL.fileDecls = []*fileElement{{empty: protoDollar[1].b}}
1069 }
1070 case 15:
1071 protoDollar = protoS[protopt-4 : protopt+1]
1072//line proto.y:170
1073 {
1074 if protoDollar[3].str.val != "proto2" && protoDollar[3].str.val != "proto3" {
1075 lexError(protolex, protoDollar[3].str.start(), "syntax value must be 'proto2' or 'proto3'")
1076 }
1077 protoVAL.syn = &syntaxNode{syntax: protoDollar[3].str}
1078 protoVAL.syn.setRange(protoDollar[1].id, protoDollar[4].b)
1079 }
1080 case 16:
1081 protoDollar = protoS[protopt-3 : protopt+1]
1082//line proto.y:178
1083 {
1084 protoVAL.imprt = &importNode{name: protoDollar[2].str}
1085 protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[3].b)
1086 }
1087 case 17:
1088 protoDollar = protoS[protopt-4 : protopt+1]
1089//line proto.y:182
1090 {
1091 protoVAL.imprt = &importNode{name: protoDollar[3].str, weak: true}
1092 protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[4].b)
1093 }
1094 case 18:
1095 protoDollar = protoS[protopt-4 : protopt+1]
1096//line proto.y:186
1097 {
1098 protoVAL.imprt = &importNode{name: protoDollar[3].str, public: true}
1099 protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[4].b)
1100 }
1101 case 19:
1102 protoDollar = protoS[protopt-3 : protopt+1]
1103//line proto.y:191
1104 {
1105 protoVAL.pkg = &packageNode{name: protoDollar[2].id}
1106 protoVAL.pkg.setRange(protoDollar[1].id, protoDollar[3].b)
1107 }
1108 case 22:
1109 protoDollar = protoS[protopt-5 : protopt+1]
1110//line proto.y:199
1111 {
1112 n := &optionNameNode{parts: protoDollar[2].optNm}
1113 n.setRange(protoDollar[2].optNm[0], protoDollar[2].optNm[len(protoDollar[2].optNm)-1])
1114 o := &optionNode{name: n, val: protoDollar[4].v}
1115 o.setRange(protoDollar[1].id, protoDollar[5].b)
1116 protoVAL.opts = []*optionNode{o}
1117 }
1118 case 23:
1119 protoDollar = protoS[protopt-1 : protopt+1]
1120//line proto.y:207
1121 {
1122 protoVAL.optNm = toNameParts(protoDollar[1].id, 0)
1123 }
1124 case 24:
1125 protoDollar = protoS[protopt-3 : protopt+1]
1126//line proto.y:210
1127 {
1128 p := &optionNamePartNode{text: protoDollar[2].id, isExtension: true}
1129 p.setRange(protoDollar[1].b, protoDollar[3].b)
1130 protoVAL.optNm = []*optionNamePartNode{p}
1131 }
1132 case 25:
1133 protoDollar = protoS[protopt-4 : protopt+1]
1134//line proto.y:215
1135 {
1136 p := &optionNamePartNode{text: protoDollar[2].id, isExtension: true}
1137 p.setRange(protoDollar[1].b, protoDollar[3].b)
1138 ps := make([]*optionNamePartNode, 1, len(protoDollar[4].optNm)+1)
1139 ps[0] = p
1140 protoVAL.optNm = append(ps, protoDollar[4].optNm...)
1141 }
1142 case 27:
1143 protoDollar = protoS[protopt-2 : protopt+1]
1144//line proto.y:224
1145 {
1146 protoVAL.optNm = append(protoDollar[1].optNm, protoDollar[2].optNm...)
1147 }
1148 case 28:
1149 protoDollar = protoS[protopt-1 : protopt+1]
1150//line proto.y:228
1151 {
1152 protoVAL.optNm = toNameParts(protoDollar[1].id, 1 /* exclude leading dot */)
1153 }
1154 case 29:
1155 protoDollar = protoS[protopt-4 : protopt+1]
1156//line proto.y:231
1157 {
1158 p := &optionNamePartNode{text: protoDollar[3].id, isExtension: true}
1159 p.setRange(protoDollar[2].b, protoDollar[4].b)
1160 protoVAL.optNm = []*optionNamePartNode{p}
1161 }
1162 case 32:
1163 protoDollar = protoS[protopt-1 : protopt+1]
1164//line proto.y:240
1165 {
1166 protoVAL.v = protoDollar[1].str
1167 }
1168 case 33:
1169 protoDollar = protoS[protopt-1 : protopt+1]
1170//line proto.y:243
1171 {
1172 protoVAL.v = protoDollar[1].ui
1173 }
1174 case 34:
1175 protoDollar = protoS[protopt-1 : protopt+1]
1176//line proto.y:246
1177 {
1178 protoVAL.v = protoDollar[1].i
1179 }
1180 case 35:
1181 protoDollar = protoS[protopt-1 : protopt+1]
1182//line proto.y:249
1183 {
1184 protoVAL.v = protoDollar[1].f
1185 }
1186 case 36:
1187 protoDollar = protoS[protopt-1 : protopt+1]
1188//line proto.y:252
1189 {
1190 if protoDollar[1].id.val == "true" {
1191 protoVAL.v = &boolLiteralNode{basicNode: protoDollar[1].id.basicNode, val: true}
1192 } else if protoDollar[1].id.val == "false" {
1193 protoVAL.v = &boolLiteralNode{basicNode: protoDollar[1].id.basicNode, val: false}
1194 } else if protoDollar[1].id.val == "inf" {
1195 f := &floatLiteralNode{val: math.Inf(1)}
1196 f.setRange(protoDollar[1].id, protoDollar[1].id)
1197 protoVAL.v = f
1198 } else if protoDollar[1].id.val == "nan" {
1199 f := &floatLiteralNode{val: math.NaN()}
1200 f.setRange(protoDollar[1].id, protoDollar[1].id)
1201 protoVAL.v = f
1202 } else {
1203 protoVAL.v = protoDollar[1].id
1204 }
1205 }
1206 case 38:
1207 protoDollar = protoS[protopt-2 : protopt+1]
1208//line proto.y:271
1209 {
1210 protoVAL.ui = protoDollar[2].ui
1211 }
1212 case 39:
1213 protoDollar = protoS[protopt-2 : protopt+1]
1214//line proto.y:275
1215 {
1216 if protoDollar[2].ui.val > math.MaxInt64+1 {
1217 lexError(protolex, protoDollar[2].ui.start(), fmt.Sprintf("numeric constant %d would underflow (allowed range is %d to %d)", protoDollar[2].ui.val, int64(math.MinInt64), int64(math.MaxInt64)))
1218 }
1219 protoVAL.i = &negativeIntLiteralNode{val: -int64(protoDollar[2].ui.val)}
1220 protoVAL.i.setRange(protoDollar[1].b, protoDollar[2].ui)
1221 }
1222 case 41:
1223 protoDollar = protoS[protopt-2 : protopt+1]
1224//line proto.y:284
1225 {
1226 protoVAL.f = &floatLiteralNode{val: -protoDollar[2].f.val}
1227 protoVAL.f.setRange(protoDollar[1].b, protoDollar[2].f)
1228 }
1229 case 42:
1230 protoDollar = protoS[protopt-2 : protopt+1]
1231//line proto.y:288
1232 {
1233 protoVAL.f = &floatLiteralNode{val: protoDollar[2].f.val}
1234 protoVAL.f.setRange(protoDollar[1].b, protoDollar[2].f)
1235 }
1236 case 43:
1237 protoDollar = protoS[protopt-2 : protopt+1]
1238//line proto.y:292
1239 {
1240 protoVAL.f = &floatLiteralNode{val: math.Inf(1)}
1241 protoVAL.f.setRange(protoDollar[1].b, protoDollar[2].id)
1242 }
1243 case 44:
1244 protoDollar = protoS[protopt-2 : protopt+1]
1245//line proto.y:296
1246 {
1247 protoVAL.f = &floatLiteralNode{val: math.Inf(-1)}
1248 protoVAL.f.setRange(protoDollar[1].b, protoDollar[2].id)
1249 }
1250 case 46:
1251 protoDollar = protoS[protopt-2 : protopt+1]
1252//line proto.y:302
1253 {
1254 protoVAL.str = &stringLiteralNode{val: protoDollar[1].str.val + protoDollar[2].str.val}
1255 protoVAL.str.setRange(protoDollar[1].str, protoDollar[2].str)
1256 }
1257 case 47:
1258 protoDollar = protoS[protopt-3 : protopt+1]
1259//line proto.y:307
1260 {
1261 a := &aggregateLiteralNode{elements: protoDollar[2].agg}
1262 a.setRange(protoDollar[1].b, protoDollar[3].b)
1263 protoVAL.v = a
1264 }
1265 case 49:
1266 protoDollar = protoS[protopt-2 : protopt+1]
1267//line proto.y:314
1268 {
1269 protoVAL.agg = append(protoDollar[1].agg, protoDollar[2].agg...)
1270 }
1271 case 50:
1272 protoDollar = protoS[protopt-0 : protopt+1]
1273//line proto.y:317
1274 {
1275 protoVAL.agg = nil
1276 }
1277 case 52:
1278 protoDollar = protoS[protopt-2 : protopt+1]
1279//line proto.y:322
1280 {
1281 protoVAL.agg = protoDollar[1].agg
1282 }
1283 case 53:
1284 protoDollar = protoS[protopt-2 : protopt+1]
1285//line proto.y:325
1286 {
1287 protoVAL.agg = protoDollar[1].agg
1288 }
1289 case 54:
1290 protoDollar = protoS[protopt-3 : protopt+1]
1291//line proto.y:329
1292 {
1293 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v}
1294 a.setRange(protoDollar[1].aggName, protoDollar[3].v)
1295 protoVAL.agg = []*aggregateEntryNode{a}
1296 }
1297 case 55:
1298 protoDollar = protoS[protopt-4 : protopt+1]
1299//line proto.y:334
1300 {
1301 s := &sliceLiteralNode{}
1302 s.setRange(protoDollar[3].b, protoDollar[4].b)
1303 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
1304 a.setRange(protoDollar[1].aggName, protoDollar[4].b)
1305 protoVAL.agg = []*aggregateEntryNode{a}
1306 }
1307 case 56:
1308 protoDollar = protoS[protopt-5 : protopt+1]
1309//line proto.y:341
1310 {
1311 s := &sliceLiteralNode{elements: protoDollar[4].sl}
1312 s.setRange(protoDollar[3].b, protoDollar[5].b)
1313 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
1314 a.setRange(protoDollar[1].aggName, protoDollar[5].b)
1315 protoVAL.agg = []*aggregateEntryNode{a}
1316 }
1317 case 57:
1318 protoDollar = protoS[protopt-3 : protopt+1]
1319//line proto.y:348
1320 {
1321 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v}
1322 a.setRange(protoDollar[1].aggName, protoDollar[3].v)
1323 protoVAL.agg = []*aggregateEntryNode{a}
1324 }
1325 case 58:
1326 protoDollar = protoS[protopt-2 : protopt+1]
1327//line proto.y:353
1328 {
1329 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[2].v}
1330 a.setRange(protoDollar[1].aggName, protoDollar[2].v)
1331 protoVAL.agg = []*aggregateEntryNode{a}
1332 }
1333 case 59:
1334 protoDollar = protoS[protopt-5 : protopt+1]
1335//line proto.y:358
1336 {
1337 s := &aggregateLiteralNode{elements: protoDollar[4].agg}
1338 s.setRange(protoDollar[3].b, protoDollar[5].b)
1339 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
1340 a.setRange(protoDollar[1].aggName, protoDollar[5].b)
1341 protoVAL.agg = []*aggregateEntryNode{a}
1342 }
1343 case 60:
1344 protoDollar = protoS[protopt-4 : protopt+1]
1345//line proto.y:365
1346 {
1347 s := &aggregateLiteralNode{elements: protoDollar[3].agg}
1348 s.setRange(protoDollar[2].b, protoDollar[4].b)
1349 a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
1350 a.setRange(protoDollar[1].aggName, protoDollar[4].b)
1351 protoVAL.agg = []*aggregateEntryNode{a}
1352 }
1353 case 61:
1354 protoDollar = protoS[protopt-1 : protopt+1]
1355//line proto.y:373
1356 {
1357 protoVAL.aggName = &aggregateNameNode{name: protoDollar[1].id}
1358 protoVAL.aggName.setRange(protoDollar[1].id, protoDollar[1].id)
1359 }
1360 case 62:
1361 protoDollar = protoS[protopt-3 : protopt+1]
1362//line proto.y:377
1363 {
1364 protoVAL.aggName = &aggregateNameNode{name: protoDollar[2].id, isExtension: true}
1365 protoVAL.aggName.setRange(protoDollar[1].b, protoDollar[3].b)
1366 }
1367 case 63:
1368 protoDollar = protoS[protopt-1 : protopt+1]
1369//line proto.y:382
1370 {
1371 protoVAL.sl = []valueNode{protoDollar[1].v}
1372 }
1373 case 64:
1374 protoDollar = protoS[protopt-3 : protopt+1]
1375//line proto.y:385
1376 {
1377 protoVAL.sl = append(protoDollar[1].sl, protoDollar[3].v)
1378 }
1379 case 65:
1380 protoDollar = protoS[protopt-3 : protopt+1]
1381//line proto.y:388
1382 {
1383 protoVAL.sl = append(protoDollar[1].sl, protoDollar[3].v)
1384 }
1385 case 66:
1386 protoDollar = protoS[protopt-3 : protopt+1]
1387//line proto.y:391
1388 {
1389 s := &aggregateLiteralNode{elements: protoDollar[2].agg}
1390 s.setRange(protoDollar[1].b, protoDollar[3].b)
1391 protoVAL.sl = []valueNode{s}
1392 }
1393 case 67:
1394 protoDollar = protoS[protopt-5 : protopt+1]
1395//line proto.y:396
1396 {
1397 s := &aggregateLiteralNode{elements: protoDollar[4].agg}
1398 s.setRange(protoDollar[3].b, protoDollar[5].b)
1399 protoVAL.sl = append(protoDollar[1].sl, s)
1400 }
1401 case 68:
1402 protoDollar = protoS[protopt-5 : protopt+1]
1403//line proto.y:401
1404 {
1405 s := &aggregateLiteralNode{elements: protoDollar[4].agg}
1406 s.setRange(protoDollar[3].b, protoDollar[5].b)
1407 protoVAL.sl = append(protoDollar[1].sl, s)
1408 }
1409 case 71:
1410 protoDollar = protoS[protopt-6 : protopt+1]
1411//line proto.y:410
1412 {
1413 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1414 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, required: true}
1415 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui}
1416 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
1417 }
1418 case 72:
1419 protoDollar = protoS[protopt-6 : protopt+1]
1420//line proto.y:416
1421 {
1422 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1423 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode}
1424 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui}
1425 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
1426 }
1427 case 73:
1428 protoDollar = protoS[protopt-6 : protopt+1]
1429//line proto.y:422
1430 {
1431 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1432 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, repeated: true}
1433 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui}
1434 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
1435 }
1436 case 74:
1437 protoDollar = protoS[protopt-5 : protopt+1]
1438//line proto.y:428
1439 {
1440 checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val)
1441 protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui}
1442 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b)
1443 }
1444 case 75:
1445 protoDollar = protoS[protopt-9 : protopt+1]
1446//line proto.y:433
1447 {
1448 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1449 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, required: true}
1450 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts}
1451 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b)
1452 }
1453 case 76:
1454 protoDollar = protoS[protopt-9 : protopt+1]
1455//line proto.y:439
1456 {
1457 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1458 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode}
1459 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts}
1460 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b)
1461 }
1462 case 77:
1463 protoDollar = protoS[protopt-9 : protopt+1]
1464//line proto.y:445
1465 {
1466 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1467 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, repeated: true}
1468 protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts}
1469 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b)
1470 }
1471 case 78:
1472 protoDollar = protoS[protopt-8 : protopt+1]
1473//line proto.y:451
1474 {
1475 checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val)
1476 protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[6].opts}
1477 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[8].b)
1478 }
1479 case 79:
1480 protoDollar = protoS[protopt-3 : protopt+1]
1481//line proto.y:457
1482 {
1483 protoVAL.opts = append(protoDollar[1].opts, protoDollar[3].opts...)
1484 }
1485 case 81:
1486 protoDollar = protoS[protopt-3 : protopt+1]
1487//line proto.y:462
1488 {
1489 n := &optionNameNode{parts: protoDollar[1].optNm}
1490 n.setRange(protoDollar[1].optNm[0], protoDollar[1].optNm[len(protoDollar[1].optNm)-1])
1491 o := &optionNode{name: n, val: protoDollar[3].v}
1492 o.setRange(protoDollar[1].optNm[0], protoDollar[3].v)
1493 protoVAL.opts = []*optionNode{o}
1494 }
1495 case 82:
1496 protoDollar = protoS[protopt-8 : protopt+1]
1497//line proto.y:470
1498 {
1499 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1500 if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
1501 lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
1502 }
1503 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, required: true}
1504 protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls}
1505 protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
1506 }
1507 case 83:
1508 protoDollar = protoS[protopt-8 : protopt+1]
1509//line proto.y:479
1510 {
1511 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1512 if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
1513 lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
1514 }
1515 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode}
1516 protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls}
1517 protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
1518 }
1519 case 84:
1520 protoDollar = protoS[protopt-8 : protopt+1]
1521//line proto.y:488
1522 {
1523 checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val)
1524 if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
1525 lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
1526 }
1527 lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, repeated: true}
1528 protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls}
1529 protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
1530 }
1531 case 85:
1532 protoDollar = protoS[protopt-5 : protopt+1]
1533//line proto.y:498
1534 {
1535 c := 0
1536 for _, el := range protoDollar[4].ooDecls {
1537 if el.field != nil {
1538 c++
1539 }
1540 }
1541 if c == 0 {
1542 lexError(protolex, protoDollar[1].id.start(), "oneof must contain at least one field")
1543 }
1544 protoVAL.oo = &oneOfNode{name: protoDollar[2].id, decls: protoDollar[4].ooDecls}
1545 protoVAL.oo.setRange(protoDollar[1].id, protoDollar[5].b)
1546 }
1547 case 86:
1548 protoDollar = protoS[protopt-2 : protopt+1]
1549//line proto.y:512
1550 {
1551 protoVAL.ooDecls = append(protoDollar[1].ooDecls, protoDollar[2].ooDecls...)
1552 }
1553 case 88:
1554 protoDollar = protoS[protopt-0 : protopt+1]
1555//line proto.y:516
1556 {
1557 protoVAL.ooDecls = nil
1558 }
1559 case 89:
1560 protoDollar = protoS[protopt-1 : protopt+1]
1561//line proto.y:520
1562 {
1563 protoVAL.ooDecls = []*oneOfElement{{option: protoDollar[1].opts[0]}}
1564 }
1565 case 90:
1566 protoDollar = protoS[protopt-1 : protopt+1]
1567//line proto.y:523
1568 {
1569 protoVAL.ooDecls = []*oneOfElement{{field: protoDollar[1].fld}}
1570 }
1571 case 91:
1572 protoDollar = protoS[protopt-1 : protopt+1]
1573//line proto.y:526
1574 {
1575 protoVAL.ooDecls = []*oneOfElement{{empty: protoDollar[1].b}}
1576 }
1577 case 92:
1578 protoDollar = protoS[protopt-5 : protopt+1]
1579//line proto.y:530
1580 {
1581 checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val)
1582 protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui}
1583 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b)
1584 }
1585 case 93:
1586 protoDollar = protoS[protopt-8 : protopt+1]
1587//line proto.y:535
1588 {
1589 checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val)
1590 protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[6].opts}
1591 protoVAL.fld.setRange(protoDollar[1].id, protoDollar[8].b)
1592 }
1593 case 94:
1594 protoDollar = protoS[protopt-10 : protopt+1]
1595//line proto.y:541
1596 {
1597 checkTag(protolex, protoDollar[9].ui.start(), protoDollar[9].ui.val)
1598 protoVAL.mapFld = &mapFieldNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].id, name: protoDollar[7].id, tag: protoDollar[9].ui}
1599 protoVAL.mapFld.setRange(protoDollar[1].id, protoDollar[10].b)
1600 }
1601 case 95:
1602 protoDollar = protoS[protopt-13 : protopt+1]
1603//line proto.y:546
1604 {
1605 checkTag(protolex, protoDollar[9].ui.start(), protoDollar[9].ui.val)
1606 protoVAL.mapFld = &mapFieldNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].id, name: protoDollar[7].id, tag: protoDollar[9].ui, options: protoDollar[11].opts}
1607 protoVAL.mapFld.setRange(protoDollar[1].id, protoDollar[13].b)
1608 }
1609 case 108:
1610 protoDollar = protoS[protopt-3 : protopt+1]
1611//line proto.y:565
1612 {
1613 protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs}
1614 protoVAL.ext.setRange(protoDollar[1].id, protoDollar[3].b)
1615 }
1616 case 109:
1617 protoDollar = protoS[protopt-6 : protopt+1]
1618//line proto.y:569
1619 {
1620 protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs, options: protoDollar[4].opts}
1621 protoVAL.ext.setRange(protoDollar[1].id, protoDollar[6].b)
1622 }
1623 case 110:
1624 protoDollar = protoS[protopt-3 : protopt+1]
1625//line proto.y:574
1626 {
1627 protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...)
1628 }
1629 case 112:
1630 protoDollar = protoS[protopt-1 : protopt+1]
1631//line proto.y:579
1632 {
1633 if protoDollar[1].ui.val > internal.MaxTag {
1634 lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range includes out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag))
1635 }
1636 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[1].ui, st: int32(protoDollar[1].ui.val), en: int32(protoDollar[1].ui.val)}
1637 r.setRange(protoDollar[1].ui, protoDollar[1].ui)
1638 protoVAL.rngs = []*rangeNode{r}
1639 }
1640 case 113:
1641 protoDollar = protoS[protopt-3 : protopt+1]
1642//line proto.y:587
1643 {
1644 if protoDollar[1].ui.val > internal.MaxTag {
1645 lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag))
1646 }
1647 if protoDollar[3].ui.val > internal.MaxTag {
1648 lexError(protolex, protoDollar[3].ui.start(), fmt.Sprintf("range end is out-of-range tag: %d (should be between 0 and %d)", protoDollar[3].ui.val, internal.MaxTag))
1649 }
1650 if protoDollar[1].ui.val > protoDollar[3].ui.val {
1651 lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range, %d to %d, is invalid: start must be <= end", protoDollar[1].ui.val, protoDollar[3].ui.val))
1652 }
1653 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[3].ui, st: int32(protoDollar[1].ui.val), en: int32(protoDollar[3].ui.val)}
1654 r.setRange(protoDollar[1].ui, protoDollar[3].ui)
1655 protoVAL.rngs = []*rangeNode{r}
1656 }
1657 case 114:
1658 protoDollar = protoS[protopt-3 : protopt+1]
1659//line proto.y:601
1660 {
1661 if protoDollar[1].ui.val > internal.MaxTag {
1662 lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag))
1663 }
1664 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[3].id, st: int32(protoDollar[1].ui.val), en: internal.MaxTag}
1665 r.setRange(protoDollar[1].ui, protoDollar[3].id)
1666 protoVAL.rngs = []*rangeNode{r}
1667 }
1668 case 115:
1669 protoDollar = protoS[protopt-3 : protopt+1]
1670//line proto.y:610
1671 {
1672 protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...)
1673 }
1674 case 117:
1675 protoDollar = protoS[protopt-1 : protopt+1]
1676//line proto.y:615
1677 {
1678 checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val)
1679 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[1].ui, st: int32(protoDollar[1].ui.val), en: int32(protoDollar[1].ui.val)}
1680 r.setRange(protoDollar[1].ui, protoDollar[1].ui)
1681 protoVAL.rngs = []*rangeNode{r}
1682 }
1683 case 118:
1684 protoDollar = protoS[protopt-1 : protopt+1]
1685//line proto.y:621
1686 {
1687 checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val)
1688 r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[1].i, st: int32(protoDollar[1].i.val), en: int32(protoDollar[1].i.val)}
1689 r.setRange(protoDollar[1].i, protoDollar[1].i)
1690 protoVAL.rngs = []*rangeNode{r}
1691 }
1692 case 119:
1693 protoDollar = protoS[protopt-3 : protopt+1]
1694//line proto.y:627
1695 {
1696 checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val)
1697 checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val)
1698 if protoDollar[1].ui.val > protoDollar[3].ui.val {
1699 lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range, %d to %d, is invalid: start must be <= end", protoDollar[1].ui.val, protoDollar[3].ui.val))
1700 }
1701 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[3].ui, st: int32(protoDollar[1].ui.val), en: int32(protoDollar[3].ui.val)}
1702 r.setRange(protoDollar[1].ui, protoDollar[3].ui)
1703 protoVAL.rngs = []*rangeNode{r}
1704 }
1705 case 120:
1706 protoDollar = protoS[protopt-3 : protopt+1]
1707//line proto.y:637
1708 {
1709 checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val)
1710 checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val)
1711 if protoDollar[1].i.val > protoDollar[3].i.val {
1712 lexError(protolex, protoDollar[1].i.start(), fmt.Sprintf("range, %d to %d, is invalid: start must be <= end", protoDollar[1].i.val, protoDollar[3].i.val))
1713 }
1714 r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].i, st: int32(protoDollar[1].i.val), en: int32(protoDollar[3].i.val)}
1715 r.setRange(protoDollar[1].i, protoDollar[3].i)
1716 protoVAL.rngs = []*rangeNode{r}
1717 }
1718 case 121:
1719 protoDollar = protoS[protopt-3 : protopt+1]
1720//line proto.y:647
1721 {
1722 checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val)
1723 checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val)
1724 r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].ui, st: int32(protoDollar[1].i.val), en: int32(protoDollar[3].ui.val)}
1725 r.setRange(protoDollar[1].i, protoDollar[3].ui)
1726 protoVAL.rngs = []*rangeNode{r}
1727 }
1728 case 122:
1729 protoDollar = protoS[protopt-3 : protopt+1]
1730//line proto.y:654
1731 {
1732 checkUint64InInt32Range(protolex, protoDollar[1].ui.start(), protoDollar[1].ui.val)
1733 r := &rangeNode{stNode: protoDollar[1].ui, enNode: protoDollar[3].id, st: int32(protoDollar[1].ui.val), en: math.MaxInt32}
1734 r.setRange(protoDollar[1].ui, protoDollar[3].id)
1735 protoVAL.rngs = []*rangeNode{r}
1736 }
1737 case 123:
1738 protoDollar = protoS[protopt-3 : protopt+1]
1739//line proto.y:660
1740 {
1741 checkInt64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val)
1742 r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].id, st: int32(protoDollar[1].i.val), en: math.MaxInt32}
1743 r.setRange(protoDollar[1].i, protoDollar[3].id)
1744 protoVAL.rngs = []*rangeNode{r}
1745 }
1746 case 124:
1747 protoDollar = protoS[protopt-3 : protopt+1]
1748//line proto.y:667
1749 {
1750 protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs}
1751 protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
1752 }
1753 case 126:
1754 protoDollar = protoS[protopt-3 : protopt+1]
1755//line proto.y:673
1756 {
1757 protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs}
1758 protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
1759 }
1760 case 128:
1761 protoDollar = protoS[protopt-3 : protopt+1]
1762//line proto.y:679
1763 {
1764 rsvd := map[string]struct{}{}
1765 for _, n := range protoDollar[2].names {
1766 if _, ok := rsvd[n.val]; ok {
1767 lexError(protolex, n.start(), fmt.Sprintf("name %q is reserved multiple times", n.val))
1768 break
1769 }
1770 rsvd[n.val] = struct{}{}
1771 }
1772 protoVAL.resvd = &reservedNode{names: protoDollar[2].names}
1773 protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
1774 }
1775 case 129:
1776 protoDollar = protoS[protopt-3 : protopt+1]
1777//line proto.y:692
1778 {
1779 protoVAL.names = append(protoDollar[1].names, protoDollar[3].str)
1780 }
1781 case 130:
1782 protoDollar = protoS[protopt-1 : protopt+1]
1783//line proto.y:695
1784 {
1785 protoVAL.names = []*stringLiteralNode{protoDollar[1].str}
1786 }
1787 case 131:
1788 protoDollar = protoS[protopt-5 : protopt+1]
1789//line proto.y:699
1790 {
1791 c := 0
1792 for _, el := range protoDollar[4].enDecls {
1793 if el.value != nil {
1794 c++
1795 }
1796 }
1797 if c == 0 {
1798 lexError(protolex, protoDollar[1].id.start(), "enums must define at least one value")
1799 }
1800 protoVAL.en = &enumNode{name: protoDollar[2].id, decls: protoDollar[4].enDecls}
1801 protoVAL.en.setRange(protoDollar[1].id, protoDollar[5].b)
1802 }
1803 case 132:
1804 protoDollar = protoS[protopt-2 : protopt+1]
1805//line proto.y:713
1806 {
1807 protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecls...)
1808 }
1809 case 134:
1810 protoDollar = protoS[protopt-0 : protopt+1]
1811//line proto.y:717
1812 {
1813 protoVAL.enDecls = nil
1814 }
1815 case 135:
1816 protoDollar = protoS[protopt-1 : protopt+1]
1817//line proto.y:721
1818 {
1819 protoVAL.enDecls = []*enumElement{{option: protoDollar[1].opts[0]}}
1820 }
1821 case 136:
1822 protoDollar = protoS[protopt-1 : protopt+1]
1823//line proto.y:724
1824 {
1825 protoVAL.enDecls = []*enumElement{{value: protoDollar[1].env}}
1826 }
1827 case 137:
1828 protoDollar = protoS[protopt-1 : protopt+1]
1829//line proto.y:727
1830 {
1831 protoVAL.enDecls = []*enumElement{{reserved: protoDollar[1].resvd}}
1832 }
1833 case 138:
1834 protoDollar = protoS[protopt-1 : protopt+1]
1835//line proto.y:730
1836 {
1837 protoVAL.enDecls = []*enumElement{{empty: protoDollar[1].b}}
1838 }
1839 case 139:
1840 protoDollar = protoS[protopt-4 : protopt+1]
1841//line proto.y:734
1842 {
1843 checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val)
1844 protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberP: protoDollar[3].ui}
1845 protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b)
1846 }
1847 case 140:
1848 protoDollar = protoS[protopt-7 : protopt+1]
1849//line proto.y:739
1850 {
1851 checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val)
1852 protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberP: protoDollar[3].ui, options: protoDollar[5].opts}
1853 protoVAL.env.setRange(protoDollar[1].id, protoDollar[7].b)
1854 }
1855 case 141:
1856 protoDollar = protoS[protopt-4 : protopt+1]
1857//line proto.y:744
1858 {
1859 checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val)
1860 protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i}
1861 protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b)
1862 }
1863 case 142:
1864 protoDollar = protoS[protopt-7 : protopt+1]
1865//line proto.y:749
1866 {
1867 checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val)
1868 protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i, options: protoDollar[5].opts}
1869 protoVAL.env.setRange(protoDollar[1].id, protoDollar[7].b)
1870 }
1871 case 143:
1872 protoDollar = protoS[protopt-5 : protopt+1]
1873//line proto.y:755
1874 {
1875 protoVAL.msg = &messageNode{name: protoDollar[2].id, decls: protoDollar[4].msgDecls}
1876 protoVAL.msg.setRange(protoDollar[1].id, protoDollar[5].b)
1877 }
1878 case 144:
1879 protoDollar = protoS[protopt-2 : protopt+1]
1880//line proto.y:760
1881 {
1882 protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecls...)
1883 }
1884 case 146:
1885 protoDollar = protoS[protopt-0 : protopt+1]
1886//line proto.y:764
1887 {
1888 protoVAL.msgDecls = nil
1889 }
1890 case 147:
1891 protoDollar = protoS[protopt-1 : protopt+1]
1892//line proto.y:768
1893 {
1894 protoVAL.msgDecls = []*messageElement{{field: protoDollar[1].fld}}
1895 }
1896 case 148:
1897 protoDollar = protoS[protopt-1 : protopt+1]
1898//line proto.y:771
1899 {
1900 protoVAL.msgDecls = []*messageElement{{enum: protoDollar[1].en}}
1901 }
1902 case 149:
1903 protoDollar = protoS[protopt-1 : protopt+1]
1904//line proto.y:774
1905 {
1906 protoVAL.msgDecls = []*messageElement{{nested: protoDollar[1].msg}}
1907 }
1908 case 150:
1909 protoDollar = protoS[protopt-1 : protopt+1]
1910//line proto.y:777
1911 {
1912 protoVAL.msgDecls = []*messageElement{{extend: protoDollar[1].extend}}
1913 }
1914 case 151:
1915 protoDollar = protoS[protopt-1 : protopt+1]
1916//line proto.y:780
1917 {
1918 protoVAL.msgDecls = []*messageElement{{extensionRange: protoDollar[1].ext}}
1919 }
1920 case 152:
1921 protoDollar = protoS[protopt-1 : protopt+1]
1922//line proto.y:783
1923 {
1924 protoVAL.msgDecls = []*messageElement{{group: protoDollar[1].grp}}
1925 }
1926 case 153:
1927 protoDollar = protoS[protopt-1 : protopt+1]
1928//line proto.y:786
1929 {
1930 protoVAL.msgDecls = []*messageElement{{option: protoDollar[1].opts[0]}}
1931 }
1932 case 154:
1933 protoDollar = protoS[protopt-1 : protopt+1]
1934//line proto.y:789
1935 {
1936 protoVAL.msgDecls = []*messageElement{{oneOf: protoDollar[1].oo}}
1937 }
1938 case 155:
1939 protoDollar = protoS[protopt-1 : protopt+1]
1940//line proto.y:792
1941 {
1942 protoVAL.msgDecls = []*messageElement{{mapField: protoDollar[1].mapFld}}
1943 }
1944 case 156:
1945 protoDollar = protoS[protopt-1 : protopt+1]
1946//line proto.y:795
1947 {
1948 protoVAL.msgDecls = []*messageElement{{reserved: protoDollar[1].resvd}}
1949 }
1950 case 157:
1951 protoDollar = protoS[protopt-1 : protopt+1]
1952//line proto.y:798
1953 {
1954 protoVAL.msgDecls = []*messageElement{{empty: protoDollar[1].b}}
1955 }
1956 case 158:
1957 protoDollar = protoS[protopt-5 : protopt+1]
1958//line proto.y:802
1959 {
1960 c := 0
1961 for _, el := range protoDollar[4].extDecls {
1962 if el.field != nil || el.group != nil {
1963 c++
1964 }
1965 }
1966 if c == 0 {
1967 lexError(protolex, protoDollar[1].id.start(), "extend sections must define at least one extension")
1968 }
1969 protoVAL.extend = &extendNode{extendee: protoDollar[2].id, decls: protoDollar[4].extDecls}
1970 protoVAL.extend.setRange(protoDollar[1].id, protoDollar[5].b)
1971 }
1972 case 159:
1973 protoDollar = protoS[protopt-2 : protopt+1]
1974//line proto.y:816
1975 {
1976 protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecls...)
1977 }
1978 case 161:
1979 protoDollar = protoS[protopt-0 : protopt+1]
1980//line proto.y:820
1981 {
1982 protoVAL.extDecls = nil
1983 }
1984 case 162:
1985 protoDollar = protoS[protopt-1 : protopt+1]
1986//line proto.y:824
1987 {
1988 protoVAL.extDecls = []*extendElement{{field: protoDollar[1].fld}}
1989 }
1990 case 163:
1991 protoDollar = protoS[protopt-1 : protopt+1]
1992//line proto.y:827
1993 {
1994 protoVAL.extDecls = []*extendElement{{group: protoDollar[1].grp}}
1995 }
1996 case 164:
1997 protoDollar = protoS[protopt-1 : protopt+1]
1998//line proto.y:830
1999 {
2000 protoVAL.extDecls = []*extendElement{{empty: protoDollar[1].b}}
2001 }
2002 case 165:
2003 protoDollar = protoS[protopt-5 : protopt+1]
2004//line proto.y:834
2005 {
2006 protoVAL.svc = &serviceNode{name: protoDollar[2].id, decls: protoDollar[4].svcDecls}
2007 protoVAL.svc.setRange(protoDollar[1].id, protoDollar[5].b)
2008 }
2009 case 166:
2010 protoDollar = protoS[protopt-2 : protopt+1]
2011//line proto.y:839
2012 {
2013 protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecls...)
2014 }
2015 case 168:
2016 protoDollar = protoS[protopt-0 : protopt+1]
2017//line proto.y:843
2018 {
2019 protoVAL.svcDecls = nil
2020 }
2021 case 169:
2022 protoDollar = protoS[protopt-1 : protopt+1]
2023//line proto.y:850
2024 {
2025 protoVAL.svcDecls = []*serviceElement{{option: protoDollar[1].opts[0]}}
2026 }
2027 case 170:
2028 protoDollar = protoS[protopt-1 : protopt+1]
2029//line proto.y:853
2030 {
2031 protoVAL.svcDecls = []*serviceElement{{rpc: protoDollar[1].mtd}}
2032 }
2033 case 171:
2034 protoDollar = protoS[protopt-1 : protopt+1]
2035//line proto.y:856
2036 {
2037 protoVAL.svcDecls = []*serviceElement{{empty: protoDollar[1].b}}
2038 }
2039 case 172:
2040 protoDollar = protoS[protopt-10 : protopt+1]
2041//line proto.y:860
2042 {
2043 protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType}
2044 protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[10].b)
2045 }
2046 case 173:
2047 protoDollar = protoS[protopt-12 : protopt+1]
2048//line proto.y:864
2049 {
2050 protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType, options: protoDollar[11].opts}
2051 protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[12].b)
2052 }
2053 case 174:
2054 protoDollar = protoS[protopt-2 : protopt+1]
2055//line proto.y:869
2056 {
2057 protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[2].id, streamKeyword: protoDollar[1].id}
2058 protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[2].id)
2059 }
2060 case 175:
2061 protoDollar = protoS[protopt-1 : protopt+1]
2062//line proto.y:873
2063 {
2064 protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[1].id}
2065 protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[1].id)
2066 }
2067 case 176:
2068 protoDollar = protoS[protopt-2 : protopt+1]
2069//line proto.y:878
2070 {
2071 protoVAL.opts = append(protoDollar[1].opts, protoDollar[2].opts...)
2072 }
2073 case 178:
2074 protoDollar = protoS[protopt-0 : protopt+1]
2075//line proto.y:882
2076 {
2077 protoVAL.opts = []*optionNode{}
2078 }
2079 case 179:
2080 protoDollar = protoS[protopt-1 : protopt+1]
2081//line proto.y:886
2082 {
2083 protoVAL.opts = protoDollar[1].opts
2084 }
2085 case 180:
2086 protoDollar = protoS[protopt-1 : protopt+1]
2087//line proto.y:889
2088 {
2089 protoVAL.opts = []*optionNode{}
2090 }
2091 }
2092 goto protostack /* stack new state and value */
2093}