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