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