github.com/tinyhole/pblib@v0.0.0-20191001142211-98c63f19cf59/protoreflect/desc/protoparse/proto.y.go (about) 1 // Code generated by goyacc -o proto.y.go -p proto proto.y. DO NOT EDIT. 2 3 //line proto.y:2 4 package protoparse 5 6 import __yyfmt__ "fmt" 7 8 //line proto.y:2 9 10 //lint:file-ignore SA4006 generated parser has unused values 11 12 import ( 13 "fmt" 14 "math" 15 "unicode" 16 17 "github.com/tinyhole/pblib/protoreflect/desc/internal" 18 ) 19 20 //line proto.y:18 21 type 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 67 const _STRING_LIT = 57346 68 const _INT_LIT = 57347 69 const _FLOAT_LIT = 57348 70 const _NAME = 57349 71 const _SYNTAX = 57350 72 const _IMPORT = 57351 73 const _WEAK = 57352 74 const _PUBLIC = 57353 75 const _PACKAGE = 57354 76 const _OPTION = 57355 77 const _TRUE = 57356 78 const _FALSE = 57357 79 const _INF = 57358 80 const _NAN = 57359 81 const _REPEATED = 57360 82 const _OPTIONAL = 57361 83 const _REQUIRED = 57362 84 const _DOUBLE = 57363 85 const _FLOAT = 57364 86 const _INT32 = 57365 87 const _INT64 = 57366 88 const _UINT32 = 57367 89 const _UINT64 = 57368 90 const _SINT32 = 57369 91 const _SINT64 = 57370 92 const _FIXED32 = 57371 93 const _FIXED64 = 57372 94 const _SFIXED32 = 57373 95 const _SFIXED64 = 57374 96 const _BOOL = 57375 97 const _STRING = 57376 98 const _BYTES = 57377 99 const _GROUP = 57378 100 const _ONEOF = 57379 101 const _MAP = 57380 102 const _EXTENSIONS = 57381 103 const _TO = 57382 104 const _MAX = 57383 105 const _RESERVED = 57384 106 const _ENUM = 57385 107 const _MESSAGE = 57386 108 const _EXTEND = 57387 109 const _SERVICE = 57388 110 const _RPC = 57389 111 const _STREAM = 57390 112 const _RETURNS = 57391 113 const _ERROR = 57392 114 115 var 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 } 195 var protoStatenames = [...]string{} 196 197 const protoEofCode = 1 198 const protoErrCode = 2 199 const protoInitialStackSize = 16 200 201 //line proto.y:996 202 203 //line yacctab:1 204 var 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 270 const protoPrivate = 57344 271 272 const protoLast = 2634 273 274 var 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 } 541 var 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 } 586 var 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 } 596 var 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 } 624 var 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 } 652 var 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 } 697 var 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 } 742 var 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 } 758 var 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 } 766 var protoTok3 = [...]int{ 767 0, 768 } 769 770 var protoErrorMessages = [...]struct { 771 state int 772 token int 773 msg string 774 }{} 775 776 //line yaccpar:1 777 778 /* parser for yacc output */ 779 780 var ( 781 protoDebug = 0 782 protoErrorVerbose = false 783 ) 784 785 type protoLexer interface { 786 Lex(lval *protoSymType) int 787 Error(s string) 788 } 789 790 type protoParser interface { 791 Parse(protoLexer) int 792 Lookahead() int 793 } 794 795 type protoParserImpl struct { 796 lval protoSymType 797 stack [protoInitialStackSize]protoSymType 798 char int 799 } 800 801 func (p *protoParserImpl) Lookahead() int { 802 return p.char 803 } 804 805 func protoNewParser() protoParser { 806 return &protoParserImpl{} 807 } 808 809 const protoFlag = -1000 810 811 func 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 820 func 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 829 func 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 893 func 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 918 out: 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 928 func protoParse(protolex protoLexer) int { 929 return protoNewParser().Parse(protolex) 930 } 931 932 func (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 953 ret0: 954 return 0 955 956 ret1: 957 return 1 958 959 protostack: 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 974 protonewstate: 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 998 protodefault: 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 protoVAL.en = &enumNode{name: protoDollar[2].id, decls: protoDollar[4].enDecls} 2029 protoVAL.en.setRange(protoDollar[1].id, protoDollar[5].b) 2030 } 2031 case 148: 2032 protoDollar = protoS[protopt-2 : protopt+1] 2033 //line proto.y:762 2034 { 2035 protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecls...) 2036 } 2037 case 150: 2038 protoDollar = protoS[protopt-0 : protopt+1] 2039 //line proto.y:766 2040 { 2041 protoVAL.enDecls = nil 2042 } 2043 case 151: 2044 protoDollar = protoS[protopt-1 : protopt+1] 2045 //line proto.y:770 2046 { 2047 protoVAL.enDecls = []*enumElement{{option: protoDollar[1].opts[0]}} 2048 } 2049 case 152: 2050 protoDollar = protoS[protopt-1 : protopt+1] 2051 //line proto.y:773 2052 { 2053 protoVAL.enDecls = []*enumElement{{value: protoDollar[1].env}} 2054 } 2055 case 153: 2056 protoDollar = protoS[protopt-1 : protopt+1] 2057 //line proto.y:776 2058 { 2059 protoVAL.enDecls = []*enumElement{{reserved: protoDollar[1].resvd}} 2060 } 2061 case 154: 2062 protoDollar = protoS[protopt-1 : protopt+1] 2063 //line proto.y:779 2064 { 2065 protoVAL.enDecls = []*enumElement{{empty: protoDollar[1].b}} 2066 } 2067 case 155: 2068 protoDollar = protoS[protopt-2 : protopt+1] 2069 //line proto.y:782 2070 { 2071 } 2072 case 156: 2073 protoDollar = protoS[protopt-1 : protopt+1] 2074 //line proto.y:784 2075 { 2076 } 2077 case 157: 2078 protoDollar = protoS[protopt-4 : protopt+1] 2079 //line proto.y:787 2080 { 2081 checkInt64InInt32Range(protolex, protoDollar[3].il.start(), protoDollar[3].il.val) 2082 protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].il} 2083 protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b) 2084 } 2085 case 158: 2086 protoDollar = protoS[protopt-5 : protopt+1] 2087 //line proto.y:792 2088 { 2089 checkInt64InInt32Range(protolex, protoDollar[3].il.start(), protoDollar[3].il.val) 2090 protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].il, options: protoDollar[4].cmpctOpts} 2091 protoVAL.env.setRange(protoDollar[1].id, protoDollar[5].b) 2092 } 2093 case 159: 2094 protoDollar = protoS[protopt-5 : protopt+1] 2095 //line proto.y:798 2096 { 2097 protoVAL.msg = &messageNode{name: protoDollar[2].id, decls: protoDollar[4].msgDecls} 2098 protoVAL.msg.setRange(protoDollar[1].id, protoDollar[5].b) 2099 } 2100 case 160: 2101 protoDollar = protoS[protopt-2 : protopt+1] 2102 //line proto.y:803 2103 { 2104 protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecls...) 2105 } 2106 case 162: 2107 protoDollar = protoS[protopt-0 : protopt+1] 2108 //line proto.y:807 2109 { 2110 protoVAL.msgDecls = nil 2111 } 2112 case 163: 2113 protoDollar = protoS[protopt-1 : protopt+1] 2114 //line proto.y:811 2115 { 2116 protoVAL.msgDecls = []*messageElement{{field: protoDollar[1].fld}} 2117 } 2118 case 164: 2119 protoDollar = protoS[protopt-1 : protopt+1] 2120 //line proto.y:814 2121 { 2122 protoVAL.msgDecls = []*messageElement{{enum: protoDollar[1].en}} 2123 } 2124 case 165: 2125 protoDollar = protoS[protopt-1 : protopt+1] 2126 //line proto.y:817 2127 { 2128 protoVAL.msgDecls = []*messageElement{{nested: protoDollar[1].msg}} 2129 } 2130 case 166: 2131 protoDollar = protoS[protopt-1 : protopt+1] 2132 //line proto.y:820 2133 { 2134 protoVAL.msgDecls = []*messageElement{{extend: protoDollar[1].extend}} 2135 } 2136 case 167: 2137 protoDollar = protoS[protopt-1 : protopt+1] 2138 //line proto.y:823 2139 { 2140 protoVAL.msgDecls = []*messageElement{{extensionRange: protoDollar[1].ext}} 2141 } 2142 case 168: 2143 protoDollar = protoS[protopt-1 : protopt+1] 2144 //line proto.y:826 2145 { 2146 protoVAL.msgDecls = []*messageElement{{group: protoDollar[1].grp}} 2147 } 2148 case 169: 2149 protoDollar = protoS[protopt-1 : protopt+1] 2150 //line proto.y:829 2151 { 2152 protoVAL.msgDecls = []*messageElement{{option: protoDollar[1].opts[0]}} 2153 } 2154 case 170: 2155 protoDollar = protoS[protopt-1 : protopt+1] 2156 //line proto.y:832 2157 { 2158 protoVAL.msgDecls = []*messageElement{{oneOf: protoDollar[1].oo}} 2159 } 2160 case 171: 2161 protoDollar = protoS[protopt-1 : protopt+1] 2162 //line proto.y:835 2163 { 2164 protoVAL.msgDecls = []*messageElement{{mapField: protoDollar[1].mapFld}} 2165 } 2166 case 172: 2167 protoDollar = protoS[protopt-1 : protopt+1] 2168 //line proto.y:838 2169 { 2170 protoVAL.msgDecls = []*messageElement{{reserved: protoDollar[1].resvd}} 2171 } 2172 case 173: 2173 protoDollar = protoS[protopt-1 : protopt+1] 2174 //line proto.y:841 2175 { 2176 protoVAL.msgDecls = []*messageElement{{empty: protoDollar[1].b}} 2177 } 2178 case 174: 2179 protoDollar = protoS[protopt-2 : protopt+1] 2180 //line proto.y:844 2181 { 2182 } 2183 case 175: 2184 protoDollar = protoS[protopt-1 : protopt+1] 2185 //line proto.y:846 2186 { 2187 } 2188 case 176: 2189 protoDollar = protoS[protopt-5 : protopt+1] 2190 //line proto.y:849 2191 { 2192 c := 0 2193 for _, el := range protoDollar[4].extDecls { 2194 if el.field != nil || el.group != nil { 2195 c++ 2196 } 2197 } 2198 if c == 0 { 2199 lexError(protolex, protoDollar[1].id.start(), "extend sections must define at least one extension") 2200 } 2201 protoVAL.extend = &extendNode{extendee: protoDollar[2].cid, decls: protoDollar[4].extDecls} 2202 protoVAL.extend.setRange(protoDollar[1].id, protoDollar[5].b) 2203 } 2204 case 177: 2205 protoDollar = protoS[protopt-2 : protopt+1] 2206 //line proto.y:863 2207 { 2208 protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecls...) 2209 } 2210 case 179: 2211 protoDollar = protoS[protopt-0 : protopt+1] 2212 //line proto.y:867 2213 { 2214 protoVAL.extDecls = nil 2215 } 2216 case 180: 2217 protoDollar = protoS[protopt-1 : protopt+1] 2218 //line proto.y:871 2219 { 2220 protoVAL.extDecls = []*extendElement{{field: protoDollar[1].fld}} 2221 } 2222 case 181: 2223 protoDollar = protoS[protopt-1 : protopt+1] 2224 //line proto.y:874 2225 { 2226 protoVAL.extDecls = []*extendElement{{group: protoDollar[1].grp}} 2227 } 2228 case 182: 2229 protoDollar = protoS[protopt-1 : protopt+1] 2230 //line proto.y:877 2231 { 2232 protoVAL.extDecls = []*extendElement{{empty: protoDollar[1].b}} 2233 } 2234 case 183: 2235 protoDollar = protoS[protopt-2 : protopt+1] 2236 //line proto.y:880 2237 { 2238 } 2239 case 184: 2240 protoDollar = protoS[protopt-1 : protopt+1] 2241 //line proto.y:882 2242 { 2243 } 2244 case 185: 2245 protoDollar = protoS[protopt-5 : protopt+1] 2246 //line proto.y:885 2247 { 2248 protoVAL.svc = &serviceNode{name: protoDollar[2].id, decls: protoDollar[4].svcDecls} 2249 protoVAL.svc.setRange(protoDollar[1].id, protoDollar[5].b) 2250 } 2251 case 186: 2252 protoDollar = protoS[protopt-2 : protopt+1] 2253 //line proto.y:890 2254 { 2255 protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecls...) 2256 } 2257 case 188: 2258 protoDollar = protoS[protopt-0 : protopt+1] 2259 //line proto.y:894 2260 { 2261 protoVAL.svcDecls = nil 2262 } 2263 case 189: 2264 protoDollar = protoS[protopt-1 : protopt+1] 2265 //line proto.y:901 2266 { 2267 protoVAL.svcDecls = []*serviceElement{{option: protoDollar[1].opts[0]}} 2268 } 2269 case 190: 2270 protoDollar = protoS[protopt-1 : protopt+1] 2271 //line proto.y:904 2272 { 2273 protoVAL.svcDecls = []*serviceElement{{rpc: protoDollar[1].mtd}} 2274 } 2275 case 191: 2276 protoDollar = protoS[protopt-1 : protopt+1] 2277 //line proto.y:907 2278 { 2279 protoVAL.svcDecls = []*serviceElement{{empty: protoDollar[1].b}} 2280 } 2281 case 192: 2282 protoDollar = protoS[protopt-2 : protopt+1] 2283 //line proto.y:910 2284 { 2285 } 2286 case 193: 2287 protoDollar = protoS[protopt-1 : protopt+1] 2288 //line proto.y:912 2289 { 2290 } 2291 case 194: 2292 protoDollar = protoS[protopt-10 : protopt+1] 2293 //line proto.y:915 2294 { 2295 protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType} 2296 protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[10].b) 2297 } 2298 case 195: 2299 protoDollar = protoS[protopt-12 : protopt+1] 2300 //line proto.y:919 2301 { 2302 protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType, options: protoDollar[11].opts} 2303 protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[12].b) 2304 } 2305 case 196: 2306 protoDollar = protoS[protopt-2 : protopt+1] 2307 //line proto.y:924 2308 { 2309 protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[2].cid, streamKeyword: protoDollar[1].id} 2310 protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[2].cid) 2311 } 2312 case 197: 2313 protoDollar = protoS[protopt-1 : protopt+1] 2314 //line proto.y:928 2315 { 2316 protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[1].cid} 2317 protoVAL.rpcType.setRange(protoDollar[1].cid, protoDollar[1].cid) 2318 } 2319 case 198: 2320 protoDollar = protoS[protopt-2 : protopt+1] 2321 //line proto.y:933 2322 { 2323 protoVAL.opts = append(protoDollar[1].opts, protoDollar[2].opts...) 2324 } 2325 case 200: 2326 protoDollar = protoS[protopt-0 : protopt+1] 2327 //line proto.y:937 2328 { 2329 protoVAL.opts = []*optionNode{} 2330 } 2331 case 201: 2332 protoDollar = protoS[protopt-1 : protopt+1] 2333 //line proto.y:941 2334 { 2335 protoVAL.opts = protoDollar[1].opts 2336 } 2337 case 202: 2338 protoDollar = protoS[protopt-1 : protopt+1] 2339 //line proto.y:944 2340 { 2341 protoVAL.opts = []*optionNode{} 2342 } 2343 case 203: 2344 protoDollar = protoS[protopt-2 : protopt+1] 2345 //line proto.y:947 2346 { 2347 } 2348 case 204: 2349 protoDollar = protoS[protopt-1 : protopt+1] 2350 //line proto.y:949 2351 { 2352 } 2353 } 2354 goto protostack /* stack new state and value */ 2355 }