// Code generated by goyacc -o proto.y.go -p proto proto.y. DO NOT EDIT.

//line proto.y:2
package protoparse

import __yyfmt__ "fmt"

//line proto.y:2

//lint:file-ignore SA4006 generated parser has unused values

import (
	"fmt"
	"math"
	"unicode"

	"github.com/jhump/protoreflect/desc/internal"
)

//line proto.y:18
type protoSymType struct {
	yys       int
	file      *fileNode
	fileDecls []*fileElement
	syn       *syntaxNode
	pkg       *packageNode
	imprt     *importNode
	msg       *messageNode
	msgDecls  []*messageElement
	fld       *fieldNode
	mapFld    *mapFieldNode
	mapType   *mapTypeNode
	grp       *groupNode
	oo        *oneOfNode
	ooDecls   []*oneOfElement
	ext       *extensionRangeNode
	resvd     *reservedNode
	en        *enumNode
	enDecls   []*enumElement
	env       *enumValueNode
	extend    *extendNode
	extDecls  []*extendElement
	svc       *serviceNode
	svcDecls  []*serviceElement
	mtd       *methodNode
	rpcType   *rpcTypeNode
	opts      []*optionNode
	optNm     []*optionNamePartNode
	cmpctOpts *compactOptionsNode
	rngs      []*rangeNode
	names     []*compoundStringNode
	cid       *compoundIdentNode
	sl        []valueNode
	agg       []*aggregateEntryNode
	aggName   *aggregateNameNode
	v         valueNode
	il        *compoundIntNode
	str       *compoundStringNode
	s         *stringLiteralNode
	i         *intLiteralNode
	f         *floatLiteralNode
	id        *identNode
	b         *basicNode
	err       error
}

const _STRING_LIT = 57346
const _INT_LIT = 57347
const _FLOAT_LIT = 57348
const _NAME = 57349
const _SYNTAX = 57350
const _IMPORT = 57351
const _WEAK = 57352
const _PUBLIC = 57353
const _PACKAGE = 57354
const _OPTION = 57355
const _TRUE = 57356
const _FALSE = 57357
const _INF = 57358
const _NAN = 57359
const _REPEATED = 57360
const _OPTIONAL = 57361
const _REQUIRED = 57362
const _DOUBLE = 57363
const _FLOAT = 57364
const _INT32 = 57365
const _INT64 = 57366
const _UINT32 = 57367
const _UINT64 = 57368
const _SINT32 = 57369
const _SINT64 = 57370
const _FIXED32 = 57371
const _FIXED64 = 57372
const _SFIXED32 = 57373
const _SFIXED64 = 57374
const _BOOL = 57375
const _STRING = 57376
const _BYTES = 57377
const _GROUP = 57378
const _ONEOF = 57379
const _MAP = 57380
const _EXTENSIONS = 57381
const _TO = 57382
const _MAX = 57383
const _RESERVED = 57384
const _ENUM = 57385
const _MESSAGE = 57386
const _EXTEND = 57387
const _SERVICE = 57388
const _RPC = 57389
const _STREAM = 57390
const _RETURNS = 57391
const _ERROR = 57392

var protoToknames = [...]string{
	"$end",
	"error",
	"$unk",
	"_STRING_LIT",
	"_INT_LIT",
	"_FLOAT_LIT",
	"_NAME",
	"_SYNTAX",
	"_IMPORT",
	"_WEAK",
	"_PUBLIC",
	"_PACKAGE",
	"_OPTION",
	"_TRUE",
	"_FALSE",
	"_INF",
	"_NAN",
	"_REPEATED",
	"_OPTIONAL",
	"_REQUIRED",
	"_DOUBLE",
	"_FLOAT",
	"_INT32",
	"_INT64",
	"_UINT32",
	"_UINT64",
	"_SINT32",
	"_SINT64",
	"_FIXED32",
	"_FIXED64",
	"_SFIXED32",
	"_SFIXED64",
	"_BOOL",
	"_STRING",
	"_BYTES",
	"_GROUP",
	"_ONEOF",
	"_MAP",
	"_EXTENSIONS",
	"_TO",
	"_MAX",
	"_RESERVED",
	"_ENUM",
	"_MESSAGE",
	"_EXTEND",
	"_SERVICE",
	"_RPC",
	"_STREAM",
	"_RETURNS",
	"_ERROR",
	"'='",
	"';'",
	"':'",
	"'{'",
	"'}'",
	"'\\\\'",
	"'/'",
	"'?'",
	"'.'",
	"','",
	"'>'",
	"'<'",
	"'+'",
	"'-'",
	"'('",
	"')'",
	"'['",
	"']'",
	"'*'",
	"'&'",
	"'^'",
	"'%'",
	"'$'",
	"'#'",
	"'@'",
	"'!'",
	"'~'",
	"'`'",
}
var protoStatenames = [...]string{}

const protoEofCode = 1
const protoErrCode = 2
const protoInitialStackSize = 16

//line proto.y:1005

//line yacctab:1
var protoExca = [...]int{
	-1, 0,
	1, 4,
	-2, 0,
	-1, 1,
	1, -1,
	-2, 0,
	-1, 2,
	1, 1,
	-2, 0,
	-1, 3,
	1, 2,
	-2, 0,
	-1, 22,
	1, 3,
	-2, 0,
	-1, 93,
	55, 162,
	-2, 0,
	-1, 94,
	55, 150,
	-2, 0,
	-1, 95,
	55, 179,
	-2, 0,
	-1, 97,
	55, 188,
	-2, 0,
	-1, 110,
	55, 54,
	-2, 0,
	-1, 229,
	61, 54,
	-2, 0,
	-1, 246,
	55, 103,
	-2, 0,
	-1, 272,
	61, 54,
	-2, 0,
	-1, 316,
	61, 54,
	-2, 0,
	-1, 354,
	55, 162,
	-2, 0,
	-1, 357,
	55, 162,
	-2, 0,
	-1, 360,
	55, 162,
	-2, 0,
	-1, 370,
	61, 54,
	-2, 0,
	-1, 372,
	61, 54,
	-2, 0,
	-1, 393,
	55, 162,
	-2, 0,
	-1, 404,
	55, 200,
	-2, 0,
}

const protoPrivate = 57344

const protoLast = 2634

var protoAct = [...]int{

	31, 124, 8, 406, 8, 8, 116, 117, 169, 75,
	309, 288, 293, 209, 196, 107, 210, 103, 181, 78,
	79, 161, 83, 104, 8, 168, 123, 81, 133, 118,
	155, 195, 102, 142, 105, 145, 391, 358, 346, 331,
	241, 355, 352, 242, 30, 76, 345, 330, 243, 80,
	26, 244, 244, 338, 344, 244, 244, 244, 328, 84,
	347, 304, 87, 88, 276, 275, 401, 212, 244, 342,
	321, 29, 212, 244, 115, 383, 244, 268, 212, 227,
	110, 226, 203, 367, 303, 226, 90, 412, 229, 225,
	398, 101, 109, 225, 396, 151, 146, 266, 393, 162,
	226, 360, 399, 308, 226, 265, 92, 226, 225, 374,
	96, 173, 225, 351, 357, 225, 320, 403, 354, 404,
	89, 249, 157, 379, 186, 156, 213, 90, 153, 250,
	248, 213, 377, 246, 194, 79, 78, 213, 243, 226,
	198, 199, 224, 97, 183, 151, 146, 225, 95, 94,
	223, 93, 165, 375, 366, 361, 86, 341, 335, 188,
	190, 192, 162, 17, 14, 80, 76, 220, 211, 173,
	4, 15, 165, 200, 16, 17, 202, 222, 153, 86,
	205, 157, 218, 17, 156, 215, 86, 202, 409, 234,
	235, 236, 237, 238, 239, 86, 228, 166, 285, 17,
	219, 232, 164, 230, 100, 19, 18, 20, 21, 409,
	216, 183, 96, 206, 13, 187, 167, 166, 25, 365,
	17, 368, 164, 211, 264, 217, 14, 99, 109, 364,
	173, 332, 283, 15, 98, 282, 16, 17, 408, 281,
	280, 410, 290, 85, 279, 269, 278, 247, 294, 240,
	207, 271, 91, 24, 289, 273, 267, 245, 286, 408,
	29, 197, 277, 382, 381, 327, 326, 19, 18, 20,
	21, 109, 76, 173, 173, 299, 13, 325, 291, 306,
	324, 211, 222, 211, 307, 302, 121, 11, 323, 11,
	11, 322, 119, 10, 294, 10, 10, 311, 317, 301,
	336, 337, 5, 315, 197, 334, 23, 284, 305, 11,
	178, 178, 179, 175, 176, 10, 86, 173, 173, 29,
	163, 299, 180, 29, 177, 23, 222, 160, 329, 27,
	28, 3, 340, 109, 22, 12, 154, 147, 144, 343,
	122, 289, 348, 362, 208, 339, 109, 109, 148, 173,
	127, 120, 9, 201, 9, 9, 292, 222, 140, 76,
	126, 376, 296, 125, 378, 363, 353, 380, 356, 295,
	359, 173, 170, 173, 9, 313, 172, 251, 369, 371,
	108, 106, 182, 405, 186, 173, 186, 173, 186, 287,
	7, 6, 2, 222, 394, 222, 384, 1, 386, 0,
	400, 0, 0, 0, 0, 0, 407, 407, 186, 411,
	0, 0, 311, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 314, 392, 29, 111, 114, 32,
	33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 0, 0, 110, 0, 0, 0,
	0, 0, 0, 0, 316, 112, 113, 0, 0, 0,
	312, 29, 111, 114, 32, 33, 34, 35, 36, 37,
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
	68, 69, 70, 71, 72, 73, 74, 0, 0, 0,
	0, 110, 0, 0, 0, 0, 0, 0, 0, 272,
	112, 113, 0, 0, 270, 29, 111, 114, 32, 33,
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
	74, 0, 0, 0, 0, 110, 0, 0, 0, 0,
	0, 0, 0, 372, 112, 113, 29, 111, 114, 32,
	33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 0, 0, 110, 0, 0, 0,
	0, 0, 171, 0, 370, 112, 113, 32, 33, 34,
	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
	45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
	55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 397, 0, 171, 0, 0, 0, 174, 32, 33,
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
	74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 395, 0, 171, 0, 0, 0, 174, 32,
	33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 373, 0, 0, 0, 0, 0, 174,
	29, 111, 114, 32, 33, 34, 35, 36, 37, 38,
	39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
	49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
	59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
	69, 70, 71, 72, 73, 74, 0, 0, 0, 0,
	110, 0, 0, 0, 0, 0, 171, 0, 0, 112,
	113, 32, 33, 34, 35, 36, 37, 38, 39, 40,
	41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
	51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
	61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
	71, 72, 73, 74, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 350, 0, 171, 0, 0,
	0, 174, 32, 33, 34, 35, 36, 37, 38, 39,
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
	70, 71, 72, 73, 74, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 319, 0, 171, 0,
	0, 0, 174, 32, 33, 34, 35, 36, 37, 38,
	39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
	49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
	59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
	69, 70, 71, 72, 73, 74, 0, 0, 0, 0,
	0, 221, 0, 0, 0, 0, 0, 0, 0, 387,
	0, 0, 0, 174, 32, 33, 34, 35, 36, 37,
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
	68, 69, 70, 71, 72, 73, 74, 252, 253, 254,
	255, 256, 257, 258, 259, 260, 261, 262, 263, 0,
	385, 0, 0, 0, 174, 32, 33, 34, 35, 36,
	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 349, 0, 0, 0, 174, 32, 33, 34, 35,
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
	66, 67, 68, 69, 70, 71, 72, 73, 74, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 318, 0, 0, 0, 174, 32, 33, 34,
	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
	45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
	55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 274, 0, 0, 0, 174, 32, 33,
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
	74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 171, 0, 0, 0, 174, 32,
	33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 174,
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
	72, 73, 74, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 77, 32,
	33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 129, 0, 0, 0, 233, 32, 33,
	34, 35, 36, 37, 138, 39, 40, 41, 42, 132,
	131, 130, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 139, 143,
	137, 65, 66, 141, 134, 135, 136, 71, 72, 73,
	74, 0, 0, 128, 0, 0, 402, 129, 0, 0,
	82, 0, 32, 33, 34, 35, 36, 37, 138, 39,
	40, 41, 42, 132, 131, 130, 46, 47, 48, 49,
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
	60, 61, 139, 143, 137, 65, 66, 141, 134, 135,
	136, 71, 72, 73, 74, 0, 0, 128, 0, 0,
	390, 129, 0, 0, 82, 0, 32, 33, 34, 35,
	36, 37, 138, 39, 40, 41, 42, 132, 131, 130,
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
	56, 57, 58, 59, 60, 61, 139, 143, 137, 65,
	66, 141, 134, 135, 136, 71, 72, 73, 74, 0,
	0, 128, 0, 0, 389, 129, 0, 0, 82, 0,
	32, 33, 34, 35, 36, 37, 138, 39, 40, 41,
	42, 132, 131, 130, 46, 47, 48, 49, 50, 51,
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
	139, 143, 137, 65, 66, 141, 134, 135, 136, 71,
	72, 73, 74, 0, 0, 128, 0, 0, 388, 298,
	0, 0, 82, 0, 32, 33, 34, 35, 36, 37,
	138, 39, 40, 41, 42, 43, 44, 45, 46, 47,
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
	58, 59, 60, 300, 62, 63, 64, 65, 66, 67,
	68, 69, 70, 71, 72, 73, 74, 0, 0, 297,
	0, 0, 333, 159, 0, 0, 82, 0, 32, 33,
	34, 35, 36, 37, 38, 39, 40, 41, 42, 132,
	131, 130, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
	74, 0, 0, 158, 0, 0, 214, 129, 0, 0,
	82, 0, 32, 33, 34, 35, 36, 37, 138, 39,
	40, 41, 42, 132, 131, 130, 46, 47, 48, 49,
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
	60, 61, 139, 143, 137, 65, 66, 141, 134, 135,
	136, 71, 72, 73, 74, 0, 0, 128, 0, 0,
	185, 129, 0, 0, 82, 0, 32, 33, 34, 35,
	36, 37, 138, 39, 40, 41, 42, 132, 131, 130,
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
	56, 57, 58, 59, 60, 61, 139, 143, 137, 65,
	66, 141, 134, 135, 136, 71, 72, 73, 74, 0,
	0, 128, 0, 0, 298, 0, 0, 0, 82, 32,
	33, 34, 35, 36, 37, 138, 39, 40, 41, 42,
	43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
	53, 54, 55, 56, 57, 58, 59, 60, 300, 62,
	63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
	73, 74, 0, 0, 297, 0, 0, 159, 0, 0,
	0, 82, 32, 33, 34, 35, 36, 37, 38, 39,
	40, 41, 42, 132, 131, 130, 46, 47, 48, 49,
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
	70, 71, 72, 73, 74, 0, 0, 158, 0, 0,
	231, 0, 0, 0, 82, 32, 33, 34, 35, 36,
	37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
	67, 68, 69, 70, 71, 72, 73, 74, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 82, 32, 33,
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
	64, 65, 66, 67, 68, 69, 70, 71, 72, 310,
	74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	82, 32, 33, 34, 35, 36, 37, 38, 39, 40,
	41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
	51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
	61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
	71, 72, 73, 74, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 82, 32, 33, 34, 35, 36, 37,
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
	68, 69, 70, 71, 72, 73, 74, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 184, 32, 33, 34,
	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
	45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
	55, 56, 57, 58, 59, 60, 193, 62, 63, 64,
	65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
	52, 53, 54, 55, 56, 57, 58, 59, 60, 191,
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
	72, 73, 74, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 82, 32, 33, 34, 35, 36, 37, 38,
	39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
	49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
	59, 60, 189, 62, 63, 64, 65, 66, 67, 68,
	69, 70, 71, 72, 73, 74, 0, 0, 0, 0,
	0, 150, 0, 0, 0, 82, 32, 33, 34, 35,
	36, 37, 138, 39, 40, 41, 42, 43, 44, 45,
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
	66, 152, 68, 69, 70, 71, 72, 73, 74, 0,
	150, 149, 0, 0, 204, 32, 33, 34, 35, 36,
	37, 138, 39, 40, 41, 42, 43, 44, 45, 46,
	47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
	57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
	152, 68, 69, 70, 71, 72, 73, 74, 0, 0,
	149, 32, 33, 34, 35, 36, 37, 38, 39, 40,
	41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
	51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
	61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
	71, 72, 73, 74,
}
var protoPact = [...]int{

	162, -1000, 224, 224, 202, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, 166, 319, 2584, 1463, 2584, 2584,
	2224, 2584, 224, -1000, 315, -1000, 191, 315, 315, -1000,
	68, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, 201, 27, 2224, 97, 95,
	94, 27, 2584, 89, 182, -1000, -1000, 175, 152, -1000,
	2584, 856, 8, 1959, 2538, 2065, 27, 150, -1000, -1000,
	-1000, -1000, 164, -1000, -1000, 312, -1000, -1000, -1000, -1000,
	1402, -1000, 308, 306, -1000, 2277, 1905, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 163,
	2436, 2383, 2330, 2584, 2584, 2584, 2224, 299, 1463, 2584,
	2584, 256, -1000, 20, 2489, -1000, -1000, -1000, -1000, -1000,
	161, 199, 67, -1000, 1851, -1000, -1000, -1000, -1000, 158,
	170, -1000, -1000, -1000, -1000, 148, 2584, -1000, 1036, -1000,
	90, 87, 26, -1000, 2118, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, 2277, -1000, 1522, -1000, -1000, -1000, 2584, 2584,
	2584, 2584, 2584, 2584, 198, -12, -1000, 217, 79, 196,
	78, 69, 312, 1124, -1000, -1000, -1000, 73, 45, -1000,
	216, -1000, -1000, 305, -1000, -1000, -1000, -1000, -1000, -1000,
	12, -1000, -1000, -1000, -1000, -1000, -1000, 487, -1000, 1341,
	-3, -4, -1000, 2224, 195, 193, 189, 188, 184, 181,
	302, -1000, 146, 299, 1463, 237, 2012, 294, -1000, -1000,
	315, 24, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
	-1000, -1000, -1000, -1000, 9, 73, -1000, 62, 2171, -1000,
	422, -1000, 1280, 975, 55, -1000, -1000, 4, 286, 283,
	275, 272, 261, 260, 6, -1000, -1000, -21, -1000, 180,
	-1000, -1000, 1797, -1000, -1000, -1000, -1000, -1000, 106, 2584,
	2584, 1, 312, 2224, -1000, 105, -1000, -1000, -1000, 3,
	2224, -1000, -1000, -14, -8, -1000, 1219, 914, 52, -1000,
	-1000, -1000, -10, 64, -11, 60, -15, 47, -1000, 103,
	-1000, 1463, 856, -1000, -1000, -1000, 178, 168, -1000, 102,
	22, -1000, 172, -1000, -1000, 612, 551, -1000, 792, 48,
	-1000, -1000, -1000, 101, 1959, -1000, 80, 1959, -1000, 71,
	1959, -1000, -1000, -1000, 259, 258, -1000, -1000, 10, -1000,
	1158, -1000, 1097, -1000, -1000, -1000, 1743, -1000, 1689, -1000,
	1635, -16, 44, 2171, 731, 33, 670, 29, -1000, -1000,
	-1000, -1000, 50, 1959, 0, -1000, -1000, -1000, -1000, -1000,
	1581, 65, -1000, -1000, 207, 186, -1000, -1000, -1000, 35,
	-1000, -1000, -1000,
}
var protoPgo = [...]int{

	0, 397, 392, 302, 331, 391, 390, 1, 11, 389,
	3, 383, 9, 18, 382, 43, 32, 17, 23, 381,
	380, 16, 15, 0, 377, 27, 28, 376, 375, 25,
	8, 372, 29, 369, 363, 26, 362, 360, 358, 351,
	7, 6, 12, 356, 353, 350, 348, 33, 14, 31,
	13, 344, 340, 292, 35, 338, 337, 286, 30, 336,
	34, 335, 21, 327, 320, 10,
}
var protoR1 = [...]int{

	0, 1, 1, 1, 1, 4, 4, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 2, 5, 5,
	5, 6, 25, 25, 7, 12, 12, 12, 13, 13,
	14, 14, 16, 16, 17, 17, 17, 17, 17, 19,
	19, 22, 21, 21, 20, 20, 20, 20, 20, 60,
	60, 18, 29, 29, 29, 30, 30, 30, 30, 30,
	30, 31, 31, 31, 31, 31, 31, 31, 31, 31,
	31, 27, 27, 27, 28, 28, 28, 28, 28, 28,
	28, 28, 28, 26, 26, 32, 32, 32, 32, 32,
	32, 32, 32, 15, 9, 9, 8, 35, 35, 35,
	34, 43, 43, 43, 42, 42, 42, 42, 42, 42,
	33, 33, 36, 37, 37, 38, 24, 24, 24, 24,
	24, 24, 24, 24, 24, 24, 24, 24, 52, 52,
	49, 49, 48, 48, 48, 51, 51, 50, 50, 50,
	45, 45, 46, 46, 47, 44, 44, 53, 55, 55,
	55, 54, 54, 54, 54, 54, 54, 56, 56, 39,
	41, 41, 41, 40, 40, 40, 40, 40, 40, 40,
	40, 40, 40, 40, 40, 40, 57, 59, 59, 59,
	58, 58, 58, 58, 58, 61, 63, 63, 63, 62,
	62, 62, 62, 62, 64, 64, 65, 65, 11, 11,
	11, 10, 10, 10, 10, 23, 23, 23, 23, 23,
	23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
	23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
	23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
	23, 23, 23, 23, 23, 23, 23, 23,
}
var protoR2 = [...]int{

	0, 1, 1, 2, 0, 2, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 2, 1, 4, 3, 4,
	4, 3, 1, 3, 5, 1, 3, 4, 1, 2,
	1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
	2, 2, 1, 1, 1, 2, 2, 2, 2, 1,
	2, 3, 1, 2, 0, 1, 2, 2, 2, 2,
	1, 3, 4, 5, 5, 3, 2, 5, 4, 5,
	4, 1, 3, 3, 1, 3, 3, 3, 5, 5,
	3, 5, 5, 1, 2, 6, 6, 6, 5, 7,
	7, 7, 6, 3, 3, 1, 3, 8, 8, 8,
	5, 2, 1, 0, 1, 1, 1, 1, 2, 1,
	5, 6, 7, 5, 6, 6, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 3, 4,
	3, 1, 1, 3, 3, 3, 1, 1, 3, 3,
	3, 1, 3, 1, 3, 3, 1, 5, 2, 1,
	0, 1, 1, 1, 1, 2, 1, 4, 5, 5,
	2, 1, 0, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 2, 1, 5, 2, 1, 0,
	1, 1, 1, 2, 1, 5, 2, 1, 0, 1,
	1, 1, 2, 1, 10, 12, 2, 1, 2, 1,
	0, 1, 1, 2, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
	1, 1, 1, 1, 1, 1, 1, 1,
}
var protoChk = [...]int{

	-1000, -1, -2, -4, 8, -3, -5, -6, -7, -39,
	-53, -57, -61, 52, 2, 9, 12, 13, 44, 43,
	45, 46, -4, -3, 51, 52, -60, 10, 11, 4,
	-25, -23, 7, 8, 9, 10, 11, 12, 13, 14,
	15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
	25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
	35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
	45, 46, 47, 48, 49, -12, -25, 65, -23, -23,
	-26, -25, 59, -23, -60, 52, 4, -60, -60, 52,
	59, 51, -26, 54, 54, 54, -25, 54, 52, 52,
	52, -23, -16, -17, -18, -60, -19, -22, -20, -23,
	54, 5, 63, 64, 6, 66, -41, -40, -32, -53,
	-39, -57, -52, -35, -7, -34, -37, -45, 52, 2,
	20, 19, 18, -26, 43, 44, 45, 39, 13, 37,
	-38, 42, -47, 38, -55, -54, -7, -56, -46, 52,
	2, -23, 42, -47, -59, -58, -32, -35, 52, 2,
	-63, -62, -7, -64, 52, 2, 47, 52, -29, -30,
	-31, 2, -27, -23, 67, 5, 6, 16, 5, 6,
	16, -13, -14, -26, 59, 55, -40, 52, -26, 36,
	-26, 36, -26, 36, -23, -49, -48, 5, -23, -23,
	-49, -44, -60, 62, 55, -54, 52, 51, -51, -50,
	-21, -22, 5, 64, 55, -58, 52, 55, -62, 52,
	-23, 55, -30, 60, 52, 60, 52, 53, -18, 62,
	-26, 2, -13, 65, -23, -23, -23, -23, -23, -23,
	51, 52, -15, 60, 67, 40, 54, 51, 52, 52,
	60, -24, 23, 24, 25, 26, 27, 28, 29, 30,
	31, 32, 33, 34, -21, 60, 52, 40, 65, -17,
	67, -18, 62, -29, 2, 68, 68, -26, 51, 51,
	51, 51, 51, 51, 5, 52, -48, -9, -8, -12,
	5, 41, -43, -42, -7, -33, -36, 52, 2, -26,
	36, 5, -60, 60, 52, -15, -50, -21, 41, -65,
	48, -26, 68, -28, 2, -16, 62, -29, 2, 61,
	61, 66, 5, 5, 5, 5, 5, 5, 52, -15,
	68, 60, 51, 55, -42, 52, -23, -23, 52, -15,
	-26, 52, 66, -26, 68, 60, 52, 68, -29, 2,
	61, 61, 52, -15, 54, 52, -15, 54, 52, -15,
	54, 52, -8, -16, 51, 51, 52, 61, 49, -16,
	62, -16, 62, 61, 61, 52, -41, 52, -41, 52,
	-41, 5, 5, 65, -29, 2, -29, 2, 55, 55,
	55, 52, -15, 54, -65, 61, 61, 61, 61, 52,
	-41, 66, 55, 52, 54, -11, -10, -7, 52, 2,
	55, -10, 52,
}
var protoDef = [...]int{

	-2, -2, -2, -2, 0, 6, 7, 8, 9, 10,
	11, 12, 13, 14, 16, 0, 0, 0, 0, 0,
	0, 0, -2, 5, 0, 15, 0, 0, 0, 49,
	0, 22, 205, 206, 207, 208, 209, 210, 211, 212,
	213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
	223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
	233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
	243, 244, 245, 246, 247, 0, 25, 0, 0, 0,
	0, 83, 0, 0, 0, 18, 50, 0, 0, 21,
	0, 0, 0, -2, -2, -2, 84, -2, 17, 19,
	20, 23, 0, 32, 33, 34, 35, 36, 37, 38,
	-2, 39, 0, 0, 44, 26, 0, 161, 163, 164,
	165, 166, 167, 168, 169, 170, 171, 172, 173, 175,
	0, 0, 0, 0, 241, 242, 0, 237, 211, 235,
	0, 240, 141, 236, 0, 149, 151, 152, 153, 154,
	156, 0, 240, 143, 0, 178, 180, 181, 182, 184,
	0, 187, 189, 190, 191, 193, 0, 24, 0, 52,
	55, 60, 0, 71, 0, 40, 46, 47, 41, 45,
	48, 27, 28, 30, 0, 159, 160, 174, 0, 234,
	0, 234, 0, 234, 0, 0, 131, 132, 0, 0,
	0, 0, 146, 0, 147, 148, 155, 0, 0, 136,
	137, 42, 43, 0, 176, 177, 183, 185, 186, 192,
	0, 51, 53, 56, 57, 58, 59, 0, 66, -2,
	0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
	0, 128, 0, 0, 0, 0, -2, 0, 140, 144,
	0, 0, 116, 117, 118, 119, 120, 121, 122, 123,
	124, 125, 126, 127, 0, 0, 142, 0, 0, 61,
	0, 65, -2, 0, 60, 72, 73, 0, 0, 0,
	0, 0, 0, 0, 0, 129, 130, 0, 95, 0,
	133, 134, 0, 102, 104, 105, 106, 107, 109, 0,
	234, 0, 145, 0, 157, 0, 135, 138, 139, 0,
	246, 197, 62, 0, 0, 74, -2, 0, 60, 68,
	70, 31, 0, 0, 0, 0, 0, 0, 88, 0,
	93, 0, 0, 100, 101, 108, 0, 0, 113, 0,
	0, 158, 0, 196, 63, 0, 0, 64, 0, 60,
	67, 69, 85, 0, -2, 86, 0, -2, 87, 0,
	-2, 92, 94, 96, 0, 0, 114, 115, 0, 75,
	-2, 76, -2, 77, 80, 89, 0, 90, 0, 91,
	0, 0, 0, 0, 0, 60, 0, 60, 97, 98,
	99, 110, 0, -2, 0, 78, 81, 79, 82, 111,
	0, 0, 112, 194, -2, 0, 199, 201, 202, 204,
	195, 198, 203,
}
var protoTok1 = [...]int{

	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 76, 3, 74, 73, 72, 70, 3,
	65, 66, 69, 63, 60, 64, 59, 57, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 53, 52,
	62, 51, 61, 58, 75, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 67, 56, 68, 71, 3, 78, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
	3, 3, 3, 54, 3, 55, 77,
}
var protoTok2 = [...]int{

	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
	42, 43, 44, 45, 46, 47, 48, 49, 50,
}
var protoTok3 = [...]int{
	0,
}

var protoErrorMessages = [...]struct {
	state int
	token int
	msg   string
}{}

//line yaccpar:1

/*	parser for yacc output	*/

var (
	protoDebug        = 0
	protoErrorVerbose = false
)

type protoLexer interface {
	Lex(lval *protoSymType) int
	Error(s string)
}

type protoParser interface {
	Parse(protoLexer) int
	Lookahead() int
}

type protoParserImpl struct {
	lval  protoSymType
	stack [protoInitialStackSize]protoSymType
	char  int
}

func (p *protoParserImpl) Lookahead() int {
	return p.char
}

func protoNewParser() protoParser {
	return &protoParserImpl{}
}

const protoFlag = -1000

func protoTokname(c int) string {
	if c >= 1 && c-1 < len(protoToknames) {
		if protoToknames[c-1] != "" {
			return protoToknames[c-1]
		}
	}
	return __yyfmt__.Sprintf("tok-%v", c)
}

func protoStatname(s int) string {
	if s >= 0 && s < len(protoStatenames) {
		if protoStatenames[s] != "" {
			return protoStatenames[s]
		}
	}
	return __yyfmt__.Sprintf("state-%v", s)
}

func protoErrorMessage(state, lookAhead int) string {
	const TOKSTART = 4

	if !protoErrorVerbose {
		return "syntax error"
	}

	for _, e := range protoErrorMessages {
		if e.state == state && e.token == lookAhead {
			return "syntax error: " + e.msg
		}
	}

	res := "syntax error: unexpected " + protoTokname(lookAhead)

	// To match Bison, suggest at most four expected tokens.
	expected := make([]int, 0, 4)

	// Look for shiftable tokens.
	base := protoPact[state]
	for tok := TOKSTART; tok-1 < len(protoToknames); tok++ {
		if n := base + tok; n >= 0 && n < protoLast && protoChk[protoAct[n]] == tok {
			if len(expected) == cap(expected) {
				return res
			}
			expected = append(expected, tok)
		}
	}

	if protoDef[state] == -2 {
		i := 0
		for protoExca[i] != -1 || protoExca[i+1] != state {
			i += 2
		}

		// Look for tokens that we accept or reduce.
		for i += 2; protoExca[i] >= 0; i += 2 {
			tok := protoExca[i]
			if tok < TOKSTART || protoExca[i+1] == 0 {
				continue
			}
			if len(expected) == cap(expected) {
				return res
			}
			expected = append(expected, tok)
		}

		// If the default action is to accept or reduce, give up.
		if protoExca[i+1] != 0 {
			return res
		}
	}

	for i, tok := range expected {
		if i == 0 {
			res += ", expecting "
		} else {
			res += " or "
		}
		res += protoTokname(tok)
	}
	return res
}

func protolex1(lex protoLexer, lval *protoSymType) (char, token int) {
	token = 0
	char = lex.Lex(lval)
	if char <= 0 {
		token = protoTok1[0]
		goto out
	}
	if char < len(protoTok1) {
		token = protoTok1[char]
		goto out
	}
	if char >= protoPrivate {
		if char < protoPrivate+len(protoTok2) {
			token = protoTok2[char-protoPrivate]
			goto out
		}
	}
	for i := 0; i < len(protoTok3); i += 2 {
		token = protoTok3[i+0]
		if token == char {
			token = protoTok3[i+1]
			goto out
		}
	}

out:
	if token == 0 {
		token = protoTok2[1] /* unknown char */
	}
	if protoDebug >= 3 {
		__yyfmt__.Printf("lex %s(%d)\n", protoTokname(token), uint(char))
	}
	return char, token
}

func protoParse(protolex protoLexer) int {
	return protoNewParser().Parse(protolex)
}

func (protorcvr *protoParserImpl) Parse(protolex protoLexer) int {
	var proton int
	var protoVAL protoSymType
	var protoDollar []protoSymType
	_ = protoDollar // silence set and not used
	protoS := protorcvr.stack[:]

	Nerrs := 0   /* number of errors */
	Errflag := 0 /* error recovery flag */
	protostate := 0
	protorcvr.char = -1
	prototoken := -1 // protorcvr.char translated into internal numbering
	defer func() {
		// Make sure we report no lookahead when not parsing.
		protostate = -1
		protorcvr.char = -1
		prototoken = -1
	}()
	protop := -1
	goto protostack

ret0:
	return 0

ret1:
	return 1

protostack:
	/* put a state and value onto the stack */
	if protoDebug >= 4 {
		__yyfmt__.Printf("char %v in %v\n", protoTokname(prototoken), protoStatname(protostate))
	}

	protop++
	if protop >= len(protoS) {
		nyys := make([]protoSymType, len(protoS)*2)
		copy(nyys, protoS)
		protoS = nyys
	}
	protoS[protop] = protoVAL
	protoS[protop].yys = protostate

protonewstate:
	proton = protoPact[protostate]
	if proton <= protoFlag {
		goto protodefault /* simple state */
	}
	if protorcvr.char < 0 {
		protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
	}
	proton += prototoken
	if proton < 0 || proton >= protoLast {
		goto protodefault
	}
	proton = protoAct[proton]
	if protoChk[proton] == prototoken { /* valid shift */
		protorcvr.char = -1
		prototoken = -1
		protoVAL = protorcvr.lval
		protostate = proton
		if Errflag > 0 {
			Errflag--
		}
		goto protostack
	}

protodefault:
	/* default state action */
	proton = protoDef[protostate]
	if proton == -2 {
		if protorcvr.char < 0 {
			protorcvr.char, prototoken = protolex1(protolex, &protorcvr.lval)
		}

		/* look through exception table */
		xi := 0
		for {
			if protoExca[xi+0] == -1 && protoExca[xi+1] == protostate {
				break
			}
			xi += 2
		}
		for xi += 2; ; xi += 2 {
			proton = protoExca[xi+0]
			if proton < 0 || proton == prototoken {
				break
			}
		}
		proton = protoExca[xi+1]
		if proton < 0 {
			goto ret0
		}
	}
	if proton == 0 {
		/* error ... attempt to resume parsing */
		switch Errflag {
		case 0: /* brand new error */
			protolex.Error(protoErrorMessage(protostate, prototoken))
			Nerrs++
			if protoDebug >= 1 {
				__yyfmt__.Printf("%s", protoStatname(protostate))
				__yyfmt__.Printf(" saw %s\n", protoTokname(prototoken))
			}
			fallthrough

		case 1, 2: /* incompletely recovered error ... try again */
			Errflag = 3

			/* find a state where "error" is a legal shift action */
			for protop >= 0 {
				proton = protoPact[protoS[protop].yys] + protoErrCode
				if proton >= 0 && proton < protoLast {
					protostate = protoAct[proton] /* simulate a shift of "error" */
					if protoChk[protostate] == protoErrCode {
						goto protostack
					}
				}

				/* the current p has no shift on "error", pop stack */
				if protoDebug >= 2 {
					__yyfmt__.Printf("error recovery pops state %d\n", protoS[protop].yys)
				}
				protop--
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1

		case 3: /* no shift yet; clobber input char */
			if protoDebug >= 2 {
				__yyfmt__.Printf("error recovery discards %s\n", protoTokname(prototoken))
			}
			if prototoken == protoEofCode {
				goto ret1
			}
			protorcvr.char = -1
			prototoken = -1
			goto protonewstate /* try again in the same state */
		}
	}

	/* reduction by production proton */
	if protoDebug >= 2 {
		__yyfmt__.Printf("reduce %v in:\n\t%v\n", proton, protoStatname(protostate))
	}

	protont := proton
	protopt := protop
	_ = protopt // guard against "declared and not used"

	protop -= protoR2[proton]
	// protop is now the index of $0. Perform the default action. Iff the
	// reduced production is ε, $1 is possibly out of range.
	if protop+1 >= len(protoS) {
		nyys := make([]protoSymType, len(protoS)*2)
		copy(nyys, protoS)
		protoS = nyys
	}
	protoVAL = protoS[protop+1]

	/* consult goto table to find next state */
	proton = protoR1[proton]
	protog := protoPgo[proton]
	protoj := protog + protoS[protop].yys + 1

	if protoj >= protoLast {
		protostate = protoAct[protog]
	} else {
		protostate = protoAct[protoj]
		if protoChk[protostate] != -proton {
			protostate = protoAct[protog]
		}
	}
	// dummy call; replaced with literal code
	switch protont {

	case 1:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:119
		{
			protoVAL.file = &fileNode{syntax: protoDollar[1].syn}
			protoVAL.file.setRange(protoDollar[1].syn, protoDollar[1].syn)
			protolex.(*protoLex).res = protoVAL.file
		}
	case 2:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:124
		{
			protoVAL.file = &fileNode{decls: protoDollar[1].fileDecls}
			if len(protoDollar[1].fileDecls) > 0 {
				protoVAL.file.setRange(protoDollar[1].fileDecls[0], protoDollar[1].fileDecls[len(protoDollar[1].fileDecls)-1])
			}
			protolex.(*protoLex).res = protoVAL.file
		}
	case 3:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:131
		{
			protoVAL.file = &fileNode{syntax: protoDollar[1].syn, decls: protoDollar[2].fileDecls}
			var end node
			if len(protoDollar[2].fileDecls) > 0 {
				end = protoDollar[2].fileDecls[len(protoDollar[2].fileDecls)-1]
			} else {
				end = protoDollar[1].syn
			}
			protoVAL.file.setRange(protoDollar[1].syn, end)
			protolex.(*protoLex).res = protoVAL.file
		}
	case 4:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:142
		{
		}
	case 5:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:145
		{
			protoVAL.fileDecls = append(protoDollar[1].fileDecls, protoDollar[2].fileDecls...)
		}
	case 7:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:150
		{
			protoVAL.fileDecls = []*fileElement{{imp: protoDollar[1].imprt}}
		}
	case 8:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:153
		{
			protoVAL.fileDecls = []*fileElement{{pkg: protoDollar[1].pkg}}
		}
	case 9:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:156
		{
			protoVAL.fileDecls = []*fileElement{{option: protoDollar[1].opts[0]}}
		}
	case 10:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:159
		{
			protoVAL.fileDecls = []*fileElement{{message: protoDollar[1].msg}}
		}
	case 11:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:162
		{
			protoVAL.fileDecls = []*fileElement{{enum: protoDollar[1].en}}
		}
	case 12:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:165
		{
			protoVAL.fileDecls = []*fileElement{{extend: protoDollar[1].extend}}
		}
	case 13:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:168
		{
			protoVAL.fileDecls = []*fileElement{{service: protoDollar[1].svc}}
		}
	case 14:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:171
		{
			protoVAL.fileDecls = []*fileElement{{empty: protoDollar[1].b}}
		}
	case 15:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:174
		{
		}
	case 16:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:176
		{
		}
	case 17:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:179
		{
			if protoDollar[3].str.val != "proto2" && protoDollar[3].str.val != "proto3" {
				lexError(protolex, protoDollar[3].str.start(), "syntax value must be 'proto2' or 'proto3'")
			}
			protoVAL.syn = &syntaxNode{syntax: protoDollar[3].str}
			protoVAL.syn.setRange(protoDollar[1].id, protoDollar[4].b)
		}
	case 18:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:187
		{
			protoVAL.imprt = &importNode{name: protoDollar[2].str}
			protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 19:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:191
		{
			protoVAL.imprt = &importNode{name: protoDollar[3].str, weak: true}
			protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[4].b)
		}
	case 20:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:195
		{
			protoVAL.imprt = &importNode{name: protoDollar[3].str, public: true}
			protoVAL.imprt.setRange(protoDollar[1].id, protoDollar[4].b)
		}
	case 21:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:200
		{
			protoVAL.pkg = &packageNode{name: protoDollar[2].cid}
			protoVAL.pkg.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 22:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:205
		{
			protoVAL.cid = &compoundIdentNode{val: protoDollar[1].id.val}
			protoVAL.cid.setRange(protoDollar[1].id, protoDollar[1].id)
		}
	case 23:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:209
		{
			protoVAL.cid = &compoundIdentNode{val: protoDollar[1].cid.val + "." + protoDollar[3].id.val}
			protoVAL.cid.setRange(protoDollar[1].cid, protoDollar[3].id)
		}
	case 24:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:214
		{
			n := &optionNameNode{parts: protoDollar[2].optNm}
			n.setRange(protoDollar[2].optNm[0], protoDollar[2].optNm[len(protoDollar[2].optNm)-1])
			o := &optionNode{name: n, val: protoDollar[4].v}
			o.setRange(protoDollar[1].id, protoDollar[5].b)
			protoVAL.opts = []*optionNode{o}
		}
	case 25:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:222
		{
			protoVAL.optNm = toNameParts(protoDollar[1].cid, 0)
		}
	case 26:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:225
		{
			p := &optionNamePartNode{text: protoDollar[2].cid, isExtension: true}
			p.setRange(protoDollar[1].b, protoDollar[3].b)
			protoVAL.optNm = []*optionNamePartNode{p}
		}
	case 27:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:230
		{
			p := &optionNamePartNode{text: protoDollar[2].cid, isExtension: true}
			p.setRange(protoDollar[1].b, protoDollar[3].b)
			ps := make([]*optionNamePartNode, 1, len(protoDollar[4].optNm)+1)
			ps[0] = p
			protoVAL.optNm = append(ps, protoDollar[4].optNm...)
		}
	case 29:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:239
		{
			protoVAL.optNm = append(protoDollar[1].optNm, protoDollar[2].optNm...)
		}
	case 30:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:243
		{
			protoVAL.optNm = toNameParts(protoDollar[1].cid, 1 /* exclude leading dot */)
		}
	case 31:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:246
		{
			p := &optionNamePartNode{text: protoDollar[3].cid, isExtension: true}
			p.setRange(protoDollar[2].b, protoDollar[4].b)
			protoVAL.optNm = []*optionNamePartNode{p}
		}
	case 34:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:255
		{
			protoVAL.v = protoDollar[1].str
		}
	case 36:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:259
		{
			protoVAL.v = protoDollar[1].il
		}
	case 38:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:263
		{
			if protoDollar[1].id.val == "true" {
				protoVAL.v = &boolLiteralNode{identNode: protoDollar[1].id, val: true}
			} else if protoDollar[1].id.val == "false" {
				protoVAL.v = &boolLiteralNode{identNode: protoDollar[1].id, val: false}
			} else if protoDollar[1].id.val == "inf" {
				f := &compoundFloatNode{val: math.Inf(1)}
				f.setRange(protoDollar[1].id, protoDollar[1].id)
				protoVAL.v = f
			} else if protoDollar[1].id.val == "nan" {
				f := &compoundFloatNode{val: math.NaN()}
				f.setRange(protoDollar[1].id, protoDollar[1].id)
				protoVAL.v = f
			} else {
				protoVAL.v = protoDollar[1].id
			}
		}
	case 39:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:281
		{
			i := &compoundUintNode{val: protoDollar[1].i.val}
			i.setRange(protoDollar[1].i, protoDollar[1].i)
			protoVAL.v = i
		}
	case 40:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:286
		{
			i := &compoundUintNode{val: protoDollar[2].i.val}
			i.setRange(protoDollar[1].b, protoDollar[2].i)
			protoVAL.v = i
		}
	case 41:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:292
		{
			if protoDollar[2].i.val > math.MaxInt64+1 {
				lexError(protolex, protoDollar[2].i.start(), fmt.Sprintf("numeric constant %d would underflow (allowed range is %d to %d)", protoDollar[2].i.val, int64(math.MinInt64), int64(math.MaxInt64)))
			}
			i := &compoundIntNode{val: -int64(protoDollar[2].i.val)}
			i.setRange(protoDollar[1].b, protoDollar[2].i)
			protoVAL.il = i
		}
	case 43:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:302
		{
			// we don't allow uintLit because this is for enum numeric vals, which don't allow '+'
			checkUint64InInt32Range(protolex, protoDollar[1].i.start(), protoDollar[1].i.val)
			i := &compoundIntNode{val: int64(protoDollar[1].i.val)}
			i.setRange(protoDollar[1].i, protoDollar[1].i)
			protoVAL.il = i
		}
	case 44:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:310
		{
			protoVAL.v = protoDollar[1].f
		}
	case 45:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:313
		{
			f := &compoundFloatNode{val: -protoDollar[2].f.val}
			f.setRange(protoDollar[1].b, protoDollar[2].f)
			protoVAL.v = f
		}
	case 46:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:318
		{
			f := &compoundFloatNode{val: protoDollar[2].f.val}
			f.setRange(protoDollar[1].b, protoDollar[2].f)
			protoVAL.v = f
		}
	case 47:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:323
		{
			f := &compoundFloatNode{val: math.Inf(1)}
			f.setRange(protoDollar[1].b, protoDollar[2].id)
			protoVAL.v = f
		}
	case 48:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:328
		{
			f := &compoundFloatNode{val: math.Inf(-1)}
			f.setRange(protoDollar[1].b, protoDollar[2].id)
			protoVAL.v = f
		}
	case 49:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:334
		{
			protoVAL.str = &compoundStringNode{val: protoDollar[1].s.val}
			protoVAL.str.setRange(protoDollar[1].s, protoDollar[1].s)
		}
	case 50:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:338
		{
			protoVAL.str = &compoundStringNode{val: protoDollar[1].str.val + protoDollar[2].s.val}
			protoVAL.str.setRange(protoDollar[1].str, protoDollar[2].s)
		}
	case 51:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:343
		{
			a := &aggregateLiteralNode{elements: protoDollar[2].agg}
			a.setRange(protoDollar[1].b, protoDollar[3].b)
			protoVAL.v = a
		}
	case 53:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:350
		{
			protoVAL.agg = append(protoDollar[1].agg, protoDollar[2].agg...)
		}
	case 54:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:353
		{
			protoVAL.agg = nil
		}
	case 56:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:358
		{
			protoVAL.agg = protoDollar[1].agg
		}
	case 57:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:361
		{
			protoVAL.agg = protoDollar[1].agg
		}
	case 58:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:364
		{
		}
	case 59:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:366
		{
		}
	case 60:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:368
		{
		}
	case 61:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:371
		{
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v}
			a.setRange(protoDollar[1].aggName, protoDollar[3].v)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 62:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:376
		{
			s := &sliceLiteralNode{}
			s.setRange(protoDollar[3].b, protoDollar[4].b)
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
			a.setRange(protoDollar[1].aggName, protoDollar[4].b)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 63:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:383
		{
			s := &sliceLiteralNode{elements: protoDollar[4].sl}
			s.setRange(protoDollar[3].b, protoDollar[5].b)
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
			a.setRange(protoDollar[1].aggName, protoDollar[5].b)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 64:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:390
		{
		}
	case 65:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:392
		{
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v}
			a.setRange(protoDollar[1].aggName, protoDollar[3].v)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 66:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:397
		{
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[2].v}
			a.setRange(protoDollar[1].aggName, protoDollar[2].v)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 67:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:402
		{
			s := &aggregateLiteralNode{elements: protoDollar[4].agg}
			s.setRange(protoDollar[3].b, protoDollar[5].b)
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
			a.setRange(protoDollar[1].aggName, protoDollar[5].b)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 68:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:409
		{
			s := &aggregateLiteralNode{elements: protoDollar[3].agg}
			s.setRange(protoDollar[2].b, protoDollar[4].b)
			a := &aggregateEntryNode{name: protoDollar[1].aggName, val: s}
			a.setRange(protoDollar[1].aggName, protoDollar[4].b)
			protoVAL.agg = []*aggregateEntryNode{a}
		}
	case 69:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:416
		{
		}
	case 70:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:418
		{
		}
	case 71:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:421
		{
			n := &compoundIdentNode{val: protoDollar[1].id.val}
			n.setRange(protoDollar[1].id, protoDollar[1].id)
			protoVAL.aggName = &aggregateNameNode{name: n}
			protoVAL.aggName.setRange(protoDollar[1].id, protoDollar[1].id)
		}
	case 72:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:427
		{
			protoVAL.aggName = &aggregateNameNode{name: protoDollar[2].cid, isExtension: true}
			protoVAL.aggName.setRange(protoDollar[1].b, protoDollar[3].b)
		}
	case 73:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:431
		{
		}
	case 74:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:434
		{
			protoVAL.sl = []valueNode{protoDollar[1].v}
		}
	case 75:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:437
		{
			protoVAL.sl = append(protoDollar[1].sl, protoDollar[3].v)
		}
	case 76:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:440
		{
			protoVAL.sl = append(protoDollar[1].sl, protoDollar[3].v)
		}
	case 77:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:443
		{
			s := &aggregateLiteralNode{elements: protoDollar[2].agg}
			s.setRange(protoDollar[1].b, protoDollar[3].b)
			protoVAL.sl = []valueNode{s}
		}
	case 78:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:448
		{
			s := &aggregateLiteralNode{elements: protoDollar[4].agg}
			s.setRange(protoDollar[3].b, protoDollar[5].b)
			protoVAL.sl = append(protoDollar[1].sl, s)
		}
	case 79:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:453
		{
			s := &aggregateLiteralNode{elements: protoDollar[4].agg}
			s.setRange(protoDollar[3].b, protoDollar[5].b)
			protoVAL.sl = append(protoDollar[1].sl, s)
		}
	case 80:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:458
		{
		}
	case 81:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:460
		{
		}
	case 82:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:462
		{
		}
	case 84:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:466
		{
			protoVAL.cid = &compoundIdentNode{val: "." + protoDollar[2].cid.val}
			protoVAL.cid.setRange(protoDollar[1].b, protoDollar[2].cid)
		}
	case 85:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:471
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id, required: true}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
		}
	case 86:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:477
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
		}
	case 87:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:483
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id, repeated: true}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b)
		}
	case 88:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:489
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.fld = &fieldNode{fldType: protoDollar[1].cid, name: protoDollar[2].id, tag: protoDollar[4].i}
			protoVAL.fld.setRange(protoDollar[1].cid, protoDollar[5].b)
		}
	case 89:
		protoDollar = protoS[protopt-7 : protopt+1]
//line proto.y:494
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id, required: true}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i, options: protoDollar[6].cmpctOpts}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b)
		}
	case 90:
		protoDollar = protoS[protopt-7 : protopt+1]
//line proto.y:500
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i, options: protoDollar[6].cmpctOpts}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b)
		}
	case 91:
		protoDollar = protoS[protopt-7 : protopt+1]
//line proto.y:506
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			lbl := fieldLabel{identNode: protoDollar[1].id, repeated: true}
			protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].cid, name: protoDollar[3].id, tag: protoDollar[5].i, options: protoDollar[6].cmpctOpts}
			protoVAL.fld.setRange(protoDollar[1].id, protoDollar[7].b)
		}
	case 92:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:512
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.fld = &fieldNode{fldType: protoDollar[1].cid, name: protoDollar[2].id, tag: protoDollar[4].i, options: protoDollar[5].cmpctOpts}
			protoVAL.fld.setRange(protoDollar[1].cid, protoDollar[6].b)
		}
	case 93:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:518
		{
			protoVAL.cmpctOpts = &compactOptionsNode{decls: protoDollar[2].opts}
			protoVAL.cmpctOpts.setRange(protoDollar[1].b, protoDollar[3].b)
		}
	case 94:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:523
		{
			protoVAL.opts = append(protoDollar[1].opts, protoDollar[3].opts...)
		}
	case 96:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:528
		{
			n := &optionNameNode{parts: protoDollar[1].optNm}
			n.setRange(protoDollar[1].optNm[0], protoDollar[1].optNm[len(protoDollar[1].optNm)-1])
			o := &optionNode{name: n, val: protoDollar[3].v}
			o.setRange(protoDollar[1].optNm[0], protoDollar[3].v)
			protoVAL.opts = []*optionNode{o}
		}
	case 97:
		protoDollar = protoS[protopt-8 : protopt+1]
//line proto.y:536
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
				lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
			}
			lbl := fieldLabel{identNode: protoDollar[1].id, required: true}
			protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].i, decls: protoDollar[7].msgDecls}
			protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
		}
	case 98:
		protoDollar = protoS[protopt-8 : protopt+1]
//line proto.y:545
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
				lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
			}
			lbl := fieldLabel{identNode: protoDollar[1].id}
			protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].i, decls: protoDollar[7].msgDecls}
			protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
		}
	case 99:
		protoDollar = protoS[protopt-8 : protopt+1]
//line proto.y:554
		{
			checkTag(protolex, protoDollar[5].i.start(), protoDollar[5].i.val)
			if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) {
				lexError(protolex, protoDollar[3].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[3].id.val))
			}
			lbl := fieldLabel{identNode: protoDollar[1].id, repeated: true}
			protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].i, decls: protoDollar[7].msgDecls}
			protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b)
		}
	case 100:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:564
		{
			c := 0
			for _, el := range protoDollar[4].ooDecls {
				if el.field != nil {
					c++
				}
			}
			if c == 0 {
				lexError(protolex, protoDollar[1].id.start(), "oneof must contain at least one field")
			}
			protoVAL.oo = &oneOfNode{name: protoDollar[2].id, decls: protoDollar[4].ooDecls}
			protoVAL.oo.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 101:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:578
		{
			protoVAL.ooDecls = append(protoDollar[1].ooDecls, protoDollar[2].ooDecls...)
		}
	case 103:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:582
		{
			protoVAL.ooDecls = nil
		}
	case 104:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:586
		{
			protoVAL.ooDecls = []*oneOfElement{{option: protoDollar[1].opts[0]}}
		}
	case 105:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:589
		{
			protoVAL.ooDecls = []*oneOfElement{{field: protoDollar[1].fld}}
		}
	case 106:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:592
		{
			protoVAL.ooDecls = []*oneOfElement{{group: protoDollar[1].grp}}
		}
	case 107:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:595
		{
			protoVAL.ooDecls = []*oneOfElement{{empty: protoDollar[1].b}}
		}
	case 108:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:598
		{
		}
	case 109:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:600
		{
		}
	case 110:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:603
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.fld = &fieldNode{fldType: protoDollar[1].cid, name: protoDollar[2].id, tag: protoDollar[4].i}
			protoVAL.fld.setRange(protoDollar[1].cid, protoDollar[5].b)
		}
	case 111:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:608
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.fld = &fieldNode{fldType: protoDollar[1].cid, name: protoDollar[2].id, tag: protoDollar[4].i, options: protoDollar[5].cmpctOpts}
			protoVAL.fld.setRange(protoDollar[1].cid, protoDollar[6].b)
		}
	case 112:
		protoDollar = protoS[protopt-7 : protopt+1]
//line proto.y:614
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			if !unicode.IsUpper(rune(protoDollar[2].id.val[0])) {
				lexError(protolex, protoDollar[2].id.start(), fmt.Sprintf("group %s should have a name that starts with a capital letter", protoDollar[2].id.val))
			}
			protoVAL.grp = &groupNode{groupKeyword: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].i, decls: protoDollar[6].msgDecls}
			protoVAL.grp.setRange(protoDollar[1].id, protoDollar[7].b)
		}
	case 113:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:623
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.mapFld = &mapFieldNode{mapType: protoDollar[1].mapType, name: protoDollar[2].id, tag: protoDollar[4].i}
			protoVAL.mapFld.setRange(protoDollar[1].mapType, protoDollar[5].b)
		}
	case 114:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:628
		{
			checkTag(protolex, protoDollar[4].i.start(), protoDollar[4].i.val)
			protoVAL.mapFld = &mapFieldNode{mapType: protoDollar[1].mapType, name: protoDollar[2].id, tag: protoDollar[4].i, options: protoDollar[5].cmpctOpts}
			protoVAL.mapFld.setRange(protoDollar[1].mapType, protoDollar[6].b)
		}
	case 115:
		protoDollar = protoS[protopt-6 : protopt+1]
//line proto.y:634
		{
			protoVAL.mapType = &mapTypeNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].cid}
			protoVAL.mapType.setRange(protoDollar[1].id, protoDollar[6].b)
		}
	case 128:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:652
		{
			protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs}
			protoVAL.ext.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 129:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:656
		{
			protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs, options: protoDollar[3].cmpctOpts}
			protoVAL.ext.setRange(protoDollar[1].id, protoDollar[4].b)
		}
	case 130:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:661
		{
			protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...)
		}
	case 132:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:666
		{
			if protoDollar[1].i.val > internal.MaxTag {
				lexError(protolex, protoDollar[1].i.start(), fmt.Sprintf("range includes out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].i.val, internal.MaxTag))
			}
			r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[1].i, st: int32(protoDollar[1].i.val), en: int32(protoDollar[1].i.val)}
			r.setRange(protoDollar[1].i, protoDollar[1].i)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 133:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:674
		{
			if protoDollar[1].i.val > internal.MaxTag {
				lexError(protolex, protoDollar[1].i.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].i.val, internal.MaxTag))
			}
			if protoDollar[3].i.val > internal.MaxTag {
				lexError(protolex, protoDollar[3].i.start(), fmt.Sprintf("range end is out-of-range tag: %d (should be between 0 and %d)", protoDollar[3].i.val, internal.MaxTag))
			}
			if protoDollar[1].i.val > protoDollar[3].i.val {
				lexError(protolex, protoDollar[1].i.start(), fmt.Sprintf("range, %d to %d, is invalid: start must be <= end", protoDollar[1].i.val, protoDollar[3].i.val))
			}
			r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].i, st: int32(protoDollar[1].i.val), en: int32(protoDollar[3].i.val)}
			r.setRange(protoDollar[1].i, protoDollar[3].i)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 134:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:688
		{
			if protoDollar[1].i.val > internal.MaxTag {
				lexError(protolex, protoDollar[1].i.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].i.val, internal.MaxTag))
			}
			r := &rangeNode{stNode: protoDollar[1].i, enNode: protoDollar[3].id, st: int32(protoDollar[1].i.val), en: internal.MaxTag}
			r.setRange(protoDollar[1].i, protoDollar[3].id)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 135:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:697
		{
			protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...)
		}
	case 137:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:702
		{
			checkInt64InInt32Range(protolex, protoDollar[1].il.start(), protoDollar[1].il.val)
			r := &rangeNode{stNode: protoDollar[1].il, enNode: protoDollar[1].il, st: int32(protoDollar[1].il.val), en: int32(protoDollar[1].il.val)}
			r.setRange(protoDollar[1].il, protoDollar[1].il)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 138:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:708
		{
			checkInt64InInt32Range(protolex, protoDollar[1].il.start(), protoDollar[1].il.val)
			checkInt64InInt32Range(protolex, protoDollar[3].il.start(), protoDollar[3].il.val)
			if protoDollar[1].il.val > protoDollar[3].il.val {
				lexError(protolex, protoDollar[1].il.start(), fmt.Sprintf("range, %d to %d, is invalid: start must be <= end", protoDollar[1].il.val, protoDollar[3].il.val))
			}
			r := &rangeNode{stNode: protoDollar[1].il, enNode: protoDollar[3].il, st: int32(protoDollar[1].il.val), en: int32(protoDollar[3].il.val)}
			r.setRange(protoDollar[1].il, protoDollar[3].il)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 139:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:718
		{
			checkInt64InInt32Range(protolex, protoDollar[1].il.start(), protoDollar[1].il.val)
			r := &rangeNode{stNode: protoDollar[1].il, enNode: protoDollar[3].id, st: int32(protoDollar[1].il.val), en: math.MaxInt32}
			r.setRange(protoDollar[1].il, protoDollar[3].id)
			protoVAL.rngs = []*rangeNode{r}
		}
	case 140:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:725
		{
			protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs}
			protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 142:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:731
		{
			protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs}
			protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 144:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:737
		{
			rsvd := map[string]struct{}{}
			for _, n := range protoDollar[2].names {
				if _, ok := rsvd[n.val]; ok {
					lexError(protolex, n.start(), fmt.Sprintf("name %q is reserved multiple times", n.val))
					break
				}
				rsvd[n.val] = struct{}{}
			}
			protoVAL.resvd = &reservedNode{names: protoDollar[2].names}
			protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b)
		}
	case 145:
		protoDollar = protoS[protopt-3 : protopt+1]
//line proto.y:750
		{
			protoVAL.names = append(protoDollar[1].names, protoDollar[3].str)
		}
	case 146:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:753
		{
			protoVAL.names = []*compoundStringNode{protoDollar[1].str}
		}
	case 147:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:757
		{
			c := 0
			for _, el := range protoDollar[4].enDecls {
				if el.value != nil {
					c++
				}
			}
			if c == 0 {
				lexError(protolex, protoDollar[1].id.start(), "enums must define at least one value")
			}
			protoVAL.en = &enumNode{name: protoDollar[2].id, decls: protoDollar[4].enDecls}
			protoVAL.en.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 148:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:771
		{
			protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecls...)
		}
	case 150:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:775
		{
			protoVAL.enDecls = nil
		}
	case 151:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:779
		{
			protoVAL.enDecls = []*enumElement{{option: protoDollar[1].opts[0]}}
		}
	case 152:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:782
		{
			protoVAL.enDecls = []*enumElement{{value: protoDollar[1].env}}
		}
	case 153:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:785
		{
			protoVAL.enDecls = []*enumElement{{reserved: protoDollar[1].resvd}}
		}
	case 154:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:788
		{
			protoVAL.enDecls = []*enumElement{{empty: protoDollar[1].b}}
		}
	case 155:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:791
		{
		}
	case 156:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:793
		{
		}
	case 157:
		protoDollar = protoS[protopt-4 : protopt+1]
//line proto.y:796
		{
			checkInt64InInt32Range(protolex, protoDollar[3].il.start(), protoDollar[3].il.val)
			protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].il}
			protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b)
		}
	case 158:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:801
		{
			checkInt64InInt32Range(protolex, protoDollar[3].il.start(), protoDollar[3].il.val)
			protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].il, options: protoDollar[4].cmpctOpts}
			protoVAL.env.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 159:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:807
		{
			protoVAL.msg = &messageNode{name: protoDollar[2].id, decls: protoDollar[4].msgDecls}
			protoVAL.msg.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 160:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:812
		{
			protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecls...)
		}
	case 162:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:816
		{
			protoVAL.msgDecls = nil
		}
	case 163:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:820
		{
			protoVAL.msgDecls = []*messageElement{{field: protoDollar[1].fld}}
		}
	case 164:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:823
		{
			protoVAL.msgDecls = []*messageElement{{enum: protoDollar[1].en}}
		}
	case 165:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:826
		{
			protoVAL.msgDecls = []*messageElement{{nested: protoDollar[1].msg}}
		}
	case 166:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:829
		{
			protoVAL.msgDecls = []*messageElement{{extend: protoDollar[1].extend}}
		}
	case 167:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:832
		{
			protoVAL.msgDecls = []*messageElement{{extensionRange: protoDollar[1].ext}}
		}
	case 168:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:835
		{
			protoVAL.msgDecls = []*messageElement{{group: protoDollar[1].grp}}
		}
	case 169:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:838
		{
			protoVAL.msgDecls = []*messageElement{{option: protoDollar[1].opts[0]}}
		}
	case 170:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:841
		{
			protoVAL.msgDecls = []*messageElement{{oneOf: protoDollar[1].oo}}
		}
	case 171:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:844
		{
			protoVAL.msgDecls = []*messageElement{{mapField: protoDollar[1].mapFld}}
		}
	case 172:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:847
		{
			protoVAL.msgDecls = []*messageElement{{reserved: protoDollar[1].resvd}}
		}
	case 173:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:850
		{
			protoVAL.msgDecls = []*messageElement{{empty: protoDollar[1].b}}
		}
	case 174:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:853
		{
		}
	case 175:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:855
		{
		}
	case 176:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:858
		{
			c := 0
			for _, el := range protoDollar[4].extDecls {
				if el.field != nil || el.group != nil {
					c++
				}
			}
			if c == 0 {
				lexError(protolex, protoDollar[1].id.start(), "extend sections must define at least one extension")
			}
			protoVAL.extend = &extendNode{extendee: protoDollar[2].cid, decls: protoDollar[4].extDecls}
			protoVAL.extend.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 177:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:872
		{
			protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecls...)
		}
	case 179:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:876
		{
			protoVAL.extDecls = nil
		}
	case 180:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:880
		{
			protoVAL.extDecls = []*extendElement{{field: protoDollar[1].fld}}
		}
	case 181:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:883
		{
			protoVAL.extDecls = []*extendElement{{group: protoDollar[1].grp}}
		}
	case 182:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:886
		{
			protoVAL.extDecls = []*extendElement{{empty: protoDollar[1].b}}
		}
	case 183:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:889
		{
		}
	case 184:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:891
		{
		}
	case 185:
		protoDollar = protoS[protopt-5 : protopt+1]
//line proto.y:894
		{
			protoVAL.svc = &serviceNode{name: protoDollar[2].id, decls: protoDollar[4].svcDecls}
			protoVAL.svc.setRange(protoDollar[1].id, protoDollar[5].b)
		}
	case 186:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:899
		{
			protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecls...)
		}
	case 188:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:903
		{
			protoVAL.svcDecls = nil
		}
	case 189:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:910
		{
			protoVAL.svcDecls = []*serviceElement{{option: protoDollar[1].opts[0]}}
		}
	case 190:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:913
		{
			protoVAL.svcDecls = []*serviceElement{{rpc: protoDollar[1].mtd}}
		}
	case 191:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:916
		{
			protoVAL.svcDecls = []*serviceElement{{empty: protoDollar[1].b}}
		}
	case 192:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:919
		{
		}
	case 193:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:921
		{
		}
	case 194:
		protoDollar = protoS[protopt-10 : protopt+1]
//line proto.y:924
		{
			protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType}
			protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[10].b)
		}
	case 195:
		protoDollar = protoS[protopt-12 : protopt+1]
//line proto.y:928
		{
			protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType, options: protoDollar[11].opts}
			protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[12].b)
		}
	case 196:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:933
		{
			protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[2].cid, streamKeyword: protoDollar[1].id}
			protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[2].cid)
		}
	case 197:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:937
		{
			protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[1].cid}
			protoVAL.rpcType.setRange(protoDollar[1].cid, protoDollar[1].cid)
		}
	case 198:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:942
		{
			protoVAL.opts = append(protoDollar[1].opts, protoDollar[2].opts...)
		}
	case 200:
		protoDollar = protoS[protopt-0 : protopt+1]
//line proto.y:946
		{
			protoVAL.opts = []*optionNode{}
		}
	case 201:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:950
		{
			protoVAL.opts = protoDollar[1].opts
		}
	case 202:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:953
		{
			protoVAL.opts = []*optionNode{}
		}
	case 203:
		protoDollar = protoS[protopt-2 : protopt+1]
//line proto.y:956
		{
		}
	case 204:
		protoDollar = protoS[protopt-1 : protopt+1]
//line proto.y:958
		{
		}
	}
	goto protostack /* stack new state and value */
}
