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