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