| //line grammar.y:18 |
| |
| // This grammar.y.go file was auto-generated by yacc from grammar.y. |
| |
| package parse |
| |
| import __yyfmt__ "fmt" |
| |
| //line grammar.y:20 |
| import ( |
| "math/big" |
| "strings" |
| ) |
| |
| type intPos struct { |
| int *big.Int |
| pos Pos |
| } |
| |
| type ratPos struct { |
| rat *big.Rat |
| pos Pos |
| } |
| |
| type imagPos struct { |
| imag *BigImag |
| pos Pos |
| } |
| |
| // typeListToStrList converts a slice of Type to a slice of StringPos. Each |
| // type must be a TypeNamed with an empty PackageName, otherwise errors are |
| // reported, and ok=false is returned. |
| func typeListToStrList(yylex yyLexer, typeList []Type) (strList []StringPos, ok bool) { |
| ok = true |
| for _, t := range typeList { |
| var tn *TypeNamed |
| if tn, ok = t.(*TypeNamed); !ok { |
| lexPosErrorf(yylex, t.Pos(), "%s invalid (expected one or more variable names)", t.String()) |
| return |
| } |
| if strings.ContainsRune(tn.Name, '.') { |
| ok = false |
| lexPosErrorf(yylex, t.Pos(), "%s invalid (expected one or more variable names).", tn.Name) |
| return |
| } |
| strList = append(strList, StringPos{tn.Name, tn.P}) |
| } |
| return |
| } |
| |
| //line grammar.y:67 |
| type yySymType struct { |
| yys int |
| pos Pos |
| strpos StringPos |
| intpos intPos |
| ratpos ratPos |
| imagpos imagPos |
| namepos NamePos |
| nameposes []NamePos |
| typeexpr Type |
| typeexprs []Type |
| fields []*Field |
| iface *Interface |
| constexpr ConstExpr |
| constexprs []ConstExpr |
| complit *ConstCompositeLit |
| kvlit KVLit |
| kvlits []KVLit |
| errordef ErrorDef |
| } |
| |
| const startFileImports = 57346 |
| const startFile = 57347 |
| const startConfigImports = 57348 |
| const startConfig = 57349 |
| const startExprs = 57350 |
| const tOROR = 57351 |
| const tANDAND = 57352 |
| const tLE = 57353 |
| const tGE = 57354 |
| const tNE = 57355 |
| const tEQEQ = 57356 |
| const tLSH = 57357 |
| const tRSH = 57358 |
| const tCONST = 57359 |
| const tENUM = 57360 |
| const tERROR = 57361 |
| const tIMPORT = 57362 |
| const tINTERFACE = 57363 |
| const tMAP = 57364 |
| const tPACKAGE = 57365 |
| const tSET = 57366 |
| const tSTREAM = 57367 |
| const tSTRUCT = 57368 |
| const tTYPE = 57369 |
| const tTYPEOBJECT = 57370 |
| const tUNION = 57371 |
| const tIDENT = 57372 |
| const tSTRLIT = 57373 |
| const tINTLIT = 57374 |
| const tRATLIT = 57375 |
| const tIMAGLIT = 57376 |
| const notPackage = 57377 |
| const notConfig = 57378 |
| |
| var yyToknames = []string{ |
| "startFileImports", |
| "startFile", |
| "startConfigImports", |
| "startConfig", |
| "startExprs", |
| "';'", |
| "':'", |
| "','", |
| "'.'", |
| "'('", |
| "')'", |
| "'['", |
| "']'", |
| "'{'", |
| "'}'", |
| "'<'", |
| "'>'", |
| "'='", |
| "'!'", |
| "'+'", |
| "'-'", |
| "'*'", |
| "'/'", |
| "'%'", |
| "'|'", |
| "'&'", |
| "'^'", |
| "'?'", |
| "tOROR", |
| "tANDAND", |
| "tLE", |
| "tGE", |
| "tNE", |
| "tEQEQ", |
| "tLSH", |
| "tRSH", |
| "tCONST", |
| "tENUM", |
| "tERROR", |
| "tIMPORT", |
| "tINTERFACE", |
| "tMAP", |
| "tPACKAGE", |
| "tSET", |
| "tSTREAM", |
| "tSTRUCT", |
| "tTYPE", |
| "tTYPEOBJECT", |
| "tUNION", |
| "tIDENT", |
| "tSTRLIT", |
| "tINTLIT", |
| "tRATLIT", |
| "tIMAGLIT", |
| "notPackage", |
| "notConfig", |
| } |
| var yyStatenames = []string{} |
| |
| const yyEofCode = 1 |
| const yyErrCode = 2 |
| const yyMaxDepth = 200 |
| |
| //line yacctab:1 |
| var yyExca = []int{ |
| -1, 1, |
| 1, -1, |
| -2, 0, |
| -1, 27, |
| 13, 40, |
| 17, 40, |
| -2, 118, |
| -1, 176, |
| 18, 149, |
| -2, 144, |
| -1, 291, |
| 18, 149, |
| -2, 144, |
| } |
| |
| const yyNprod = 150 |
| const yyPrivate = 57344 |
| |
| var yyTokenNames []string |
| var yyStates []string |
| |
| const yyLast = 800 |
| |
| var yyAct = []int{ |
| |
| 14, 27, 13, 140, 139, 242, 251, 235, 220, 151, |
| 186, 193, 175, 137, 147, 38, 190, 252, 253, 133, |
| 166, 243, 90, 153, 152, 273, 181, 194, 191, 210, |
| 78, 21, 134, 217, 192, 249, 144, 127, 80, 89, |
| 40, 43, 213, 11, 240, 270, 8, 102, 98, 178, |
| 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, |
| 114, 115, 116, 117, 118, 119, 120, 121, 122, 87, |
| 252, 253, 194, 123, 194, 89, 126, 79, 128, 243, |
| 90, 191, 89, 150, 89, 89, 89, 89, 153, 152, |
| 125, 207, 297, 148, 189, 185, 158, 276, 159, 142, |
| 41, 296, 93, 293, 292, 87, 157, 216, 100, 46, |
| 289, 29, 87, 31, 87, 87, 87, 87, 295, 288, |
| 17, 18, 19, 153, 152, 298, 275, 277, 20, 37, |
| 210, 271, 89, 267, 191, 188, 202, 201, 86, 32, |
| 30, 198, 89, 34, 195, 33, 279, 35, 101, 22, |
| 36, 40, 23, 24, 25, 26, 103, 233, 170, 226, |
| 180, 92, 87, 174, 85, 84, 60, 61, 62, 169, |
| 64, 89, 87, 89, 124, 89, 199, 148, 204, 66, |
| 67, 131, 81, 135, 136, 141, 141, 196, 168, 15, |
| 89, 203, 96, 130, 97, 98, 209, 83, 82, 75, |
| 205, 87, 95, 87, 219, 87, 215, 68, 69, 70, |
| 71, 76, 89, 221, 77, 300, 223, 229, 299, 266, |
| 87, 264, 247, 89, 245, 236, 237, 238, 244, 224, |
| 222, 165, 162, 73, 72, 227, 239, 91, 89, 230, |
| 74, 172, 87, 248, 48, 246, 49, 291, 254, 257, |
| 255, 262, 260, 87, 176, 263, 259, 89, 89, 231, |
| 265, 244, 258, 261, 228, 268, 225, 206, 87, 272, |
| 197, 184, 141, 183, 200, 182, 171, 167, 89, 89, |
| 281, 237, 285, 89, 280, 218, 149, 87, 87, 211, |
| 99, 89, 104, 286, 287, 214, 187, 208, 290, 58, |
| 59, 60, 61, 62, 63, 64, 65, 42, 87, 87, |
| 10, 211, 156, 87, 66, 67, 12, 44, 45, 155, |
| 47, 87, 141, 2, 3, 4, 5, 6, 154, 7, |
| 29, 179, 31, 9, 94, 284, 1, 172, 250, 17, |
| 18, 19, 232, 146, 28, 278, 16, 20, 37, 241, |
| 274, 269, 39, 132, 0, 0, 141, 200, 32, 30, |
| 0, 0, 34, 0, 33, 0, 35, 0, 22, 36, |
| 40, 23, 24, 25, 26, 0, 0, 141, 283, 0, |
| 0, 0, 172, 29, 0, 31, 0, 0, 145, 0, |
| 294, 0, 17, 18, 19, 0, 0, 0, 256, 0, |
| 20, 37, 31, 0, 0, 0, 0, 0, 0, 0, |
| 0, 32, 30, 0, 0, 34, 0, 33, 37, 35, |
| 0, 22, 36, 40, 23, 24, 25, 26, 32, 30, |
| 31, 0, 34, 0, 33, 282, 35, 0, 88, 36, |
| 40, 90, 0, 0, 234, 31, 37, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 32, 30, 0, 0, |
| 34, 37, 33, 0, 35, 0, 88, 36, 40, 90, |
| 31, 32, 30, 0, 0, 34, 0, 33, 0, 35, |
| 0, 88, 36, 40, 90, 173, 37, 0, 0, 31, |
| 0, 0, 0, 0, 0, 0, 32, 30, 0, 212, |
| 34, 0, 33, 0, 35, 37, 88, 36, 40, 90, |
| 0, 0, 0, 0, 31, 32, 30, 143, 0, 34, |
| 0, 33, 0, 35, 0, 88, 36, 40, 90, 31, |
| 37, 0, 138, 0, 0, 0, 0, 0, 0, 0, |
| 32, 30, 0, 0, 34, 37, 33, 0, 35, 0, |
| 88, 36, 40, 90, 31, 32, 30, 0, 0, 34, |
| 0, 33, 0, 35, 0, 88, 36, 40, 90, 0, |
| 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 32, 30, 0, 0, 34, 177, 33, 0, 35, 0, |
| 88, 36, 40, 90, 52, 53, 0, 0, 58, 59, |
| 60, 61, 62, 63, 64, 65, 0, 50, 51, 54, |
| 55, 56, 57, 66, 67, 164, 0, 0, 52, 53, |
| 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, |
| 0, 50, 51, 54, 55, 56, 57, 66, 67, 163, |
| 0, 0, 52, 53, 0, 0, 58, 59, 60, 61, |
| 62, 63, 64, 65, 0, 50, 51, 54, 55, 56, |
| 57, 66, 67, 161, 0, 0, 0, 0, 52, 53, |
| 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, |
| 160, 50, 51, 54, 55, 56, 57, 66, 67, 0, |
| 52, 53, 0, 0, 58, 59, 60, 61, 62, 63, |
| 64, 65, 0, 50, 51, 54, 55, 56, 57, 66, |
| 67, 129, 0, 0, 0, 0, 52, 53, 0, 0, |
| 58, 59, 60, 61, 62, 63, 64, 65, 0, 50, |
| 51, 54, 55, 56, 57, 66, 67, 52, 53, 0, |
| 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, |
| 50, 51, 54, 55, 56, 57, 66, 67, 52, 53, |
| 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, |
| 0, 0, 51, 54, 55, 56, 57, 66, 67, 52, |
| 53, 0, 0, 58, 59, 60, 61, 62, 63, 64, |
| 65, 0, 0, 0, 54, 55, 56, 57, 66, 67, |
| } |
| var yyPact = []int{ |
| |
| 319, -1000, 0, 0, -10, -10, 98, -1000, -12, -1000, |
| -1000, 88, -1000, 235, 718, -1000, -1000, 98, 98, 98, |
| 98, 221, 220, 228, -1000, -1000, -1000, 184, 199, 98, |
| -1000, 22, 165, 183, 182, 148, 147, 539, 225, 144, |
| -1000, -1000, 152, 281, 5, 152, 98, 5, -1000, 98, |
| 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, |
| 98, 98, 98, 98, 98, 98, 98, 98, -1000, -1000, |
| -1000, -1000, 98, 539, -13, 98, -16, 98, 697, 177, |
| 539, -21, 539, 539, 514, 499, -1000, -1000, -1000, -1000, |
| 228, -17, 370, -1000, 277, -1000, -1000, -1000, 70, -1000, |
| 56, -1000, 671, 56, 718, 739, 760, 276, 276, 276, |
| 276, 276, 276, 141, 141, -1000, -1000, -1000, 141, -1000, |
| 141, -1000, -1000, 649, 218, 225, 623, -1000, 599, -1000, |
| 539, -1000, 268, -1000, -1000, 172, 153, 267, -1000, -1000, |
| 474, -1000, 267, -1000, -1000, -1000, 243, -1000, 575, -1000, |
| 35, -1000, -1000, -28, 266, 264, 262, 82, 81, 21, |
| -1000, -1000, -1000, -1000, -1000, -1000, 126, -21, -1000, 539, |
| 123, 539, -1000, 539, 119, 118, 98, 98, -1000, 258, |
| -1000, -1000, -1000, -1000, -1000, 77, -1000, -1000, 455, 28, |
| -1000, 86, 19, -1000, 200, -1000, -1000, -1000, -1000, -1000, |
| -1000, -1000, -1000, -1000, 718, 216, -30, -1000, 257, -1000, |
| 539, -1000, 142, -1000, 255, -1000, 98, -1000, 250, -1000, |
| 140, 430, -1000, -1000, 213, -24, 26, 210, -25, 718, |
| 208, -26, -1000, 17, -1000, 239, 387, -1000, -1000, -1000, |
| -1000, 247, -1000, 200, -1000, -1000, -1000, -1000, -1000, -1000, |
| 240, -1000, -1000, 245, 207, 539, 539, 205, 115, -32, |
| -3, 113, -36, -29, -1000, -1000, -1000, -1000, -1000, 84, |
| 108, -1000, -1000, -1000, 129, -1000, 539, 415, -1000, 317, |
| 239, 387, -1000, 99, -1000, 236, 76, 75, -1000, 539, |
| 100, 98, 59, 50, 105, -1000, 204, 201, -1000, -1000, |
| -1000, |
| } |
| var yyPgo = []int{ |
| |
| 0, 1, 15, 19, 353, 100, 31, 352, 3, 351, |
| 13, 4, 7, 8, 350, 349, 5, 0, 189, 346, |
| 345, 2, 344, 14, 343, 342, 338, 6, 336, 329, |
| 307, 102, 108, 310, 334, 331, 20, 9, 328, 319, |
| 312, 297, 10, 296, 295, 16, 285, 11, 12, |
| } |
| var yyR1 = []int{ |
| |
| 0, 28, 28, 28, 28, 28, 31, 31, 31, 31, |
| 29, 29, 33, 33, 30, 30, 34, 34, 34, 35, |
| 35, 37, 37, 32, 32, 32, 32, 38, 38, 38, |
| 38, 39, 39, 39, 40, 40, 40, 41, 41, 42, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 5, 5, 4, 4, 3, 10, 10, 11, |
| 8, 8, 43, 43, 15, 15, 16, 16, 13, 13, |
| 13, 12, 12, 14, 14, 14, 9, 9, 9, 9, |
| 20, 20, 20, 21, 21, 44, 44, 45, 17, 17, |
| 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, |
| 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, |
| 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, |
| 19, 19, 19, 19, 22, 22, 24, 24, 23, 23, |
| 46, 46, 47, 25, 25, 25, 26, 26, 27, 27, |
| 1, 1, 2, 2, 7, 7, 36, 36, 48, 48, |
| } |
| var yyR2 = []int{ |
| |
| 0, 4, 4, 4, 4, 3, 0, 1, 1, 1, |
| 0, 3, 0, 4, 0, 3, 3, 5, 2, 1, |
| 3, 1, 2, 0, 3, 3, 3, 3, 5, 2, |
| 2, 3, 5, 2, 3, 5, 2, 1, 3, 2, |
| 1, 1, 4, 3, 5, 4, 5, 5, 3, 5, |
| 3, 2, 1, 1, 1, 3, 1, 1, 3, 2, |
| 1, 3, 4, 6, 1, 3, 5, 1, 2, 4, |
| 4, 1, 3, 1, 6, 6, 0, 3, 4, 6, |
| 0, 2, 4, 1, 3, 1, 3, 3, 1, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, |
| 2, 2, 4, 4, 1, 1, 1, 1, 1, 1, |
| 3, 4, 4, 3, 3, 5, 1, 3, 1, 3, |
| 1, 3, 3, 0, 2, 4, 1, 3, 1, 3, |
| 1, 3, 1, 3, 0, 1, 0, 1, 0, 1, |
| } |
| var yyChk = []int{ |
| |
| -1000, -28, 4, 5, 6, 7, 8, -29, 46, -29, |
| -33, 53, -33, -21, -17, -18, -19, 22, 23, 24, |
| 30, -6, 51, 54, 55, 56, 57, -1, -22, 13, |
| 42, 15, 41, 47, 45, 49, 52, 31, -2, -7, |
| 53, -5, -30, 53, -30, -30, 21, -30, 9, 11, |
| 32, 33, 19, 20, 34, 35, 36, 37, 23, 24, |
| 25, 26, 27, 28, 29, 30, 38, 39, -18, -18, |
| -18, -18, 13, 13, 12, 15, 12, 15, -17, 55, |
| 16, 17, 15, 15, 17, 17, -5, -6, 51, -1, |
| 54, 12, 17, -31, -34, 50, 40, 42, 43, 9, |
| -32, -31, -17, -32, -17, -17, -17, -17, -17, -17, |
| -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, |
| -17, -17, -17, -17, -5, -2, -17, 53, -17, 14, |
| 16, -5, -4, -3, 53, -5, -5, -10, 18, -11, |
| -8, -5, -10, 18, 53, 18, -24, -23, -17, 9, |
| 13, -37, 54, 53, -38, -39, -40, 50, 40, 42, |
| 9, 14, 14, 16, 16, -5, -36, 9, 16, 16, |
| -36, 9, -5, 11, -36, -48, 11, 10, 14, -35, |
| -37, 54, 9, 9, 9, 13, -42, -43, 53, 13, |
| -45, 53, 13, -47, 53, 18, -3, -5, 18, -11, |
| -5, 18, 18, -23, -17, -36, 9, 14, -41, -42, |
| 53, -5, 44, 14, -44, -45, 21, 14, -46, -47, |
| -13, 13, 14, -37, -36, 9, 17, -36, 9, -17, |
| -36, 9, -25, 17, 14, -12, -8, -11, 14, -42, |
| 18, -15, -16, 53, -1, 14, -45, 14, -47, 18, |
| -26, -27, 53, 54, -48, 11, 11, -48, -36, 9, |
| -13, -48, 11, 10, 14, -11, 14, 18, -16, -9, |
| 48, 18, -27, 54, -14, 42, 13, 19, -20, 17, |
| -12, -8, 20, -5, 18, -21, -48, -48, 20, 11, |
| -48, 11, 28, 28, -5, 18, 42, 42, 20, 14, |
| 14, |
| } |
| var yyDef = []int{ |
| |
| 0, -2, 10, 10, 12, 12, 144, 14, 0, 14, |
| 14, 0, 14, 0, 83, 88, 107, 144, 144, 144, |
| 144, 52, 53, 114, 115, 116, 117, -2, 119, 144, |
| 41, 0, 0, 0, 0, 0, 0, 0, 140, 0, |
| 142, 145, 6, 0, 23, 6, 144, 23, 5, 144, |
| 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, |
| 144, 144, 144, 144, 144, 144, 144, 144, 108, 109, |
| 110, 111, 144, 0, 0, 144, 0, 144, 0, 0, |
| 0, 0, 0, 0, 0, 0, 51, 52, 53, 40, |
| 0, 0, 144, 1, 0, 7, 8, 9, 0, 11, |
| 2, 3, 0, 4, 84, 89, 90, 91, 92, 93, |
| 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, |
| 104, 105, 106, 0, 0, 141, 0, 120, 0, 123, |
| 0, 43, 146, 54, 56, 0, 0, 146, 48, 57, |
| 0, 60, 146, 50, 143, 124, 148, 126, 128, 15, |
| 0, 18, 21, 0, 0, 0, 0, 0, 0, 0, |
| 13, 112, 113, 122, 121, 42, 0, 147, 45, 0, |
| 0, 147, 59, 0, 0, 0, -2, 144, 16, 146, |
| 19, 22, 24, 25, 26, 0, 29, 30, 0, 0, |
| 33, 0, 0, 36, 0, 44, 55, 46, 47, 58, |
| 61, 49, 125, 127, 129, 0, 147, 27, 146, 37, |
| 0, 39, 0, 31, 146, 85, 144, 34, 146, 130, |
| 133, 0, 17, 20, 0, 147, 0, 0, 147, 87, |
| 0, 147, 132, 0, 68, 148, 148, 71, 28, 38, |
| 62, 146, 64, 142, 67, 32, 86, 35, 131, 134, |
| 148, 136, 138, 0, 0, 149, 149, 0, 0, 147, |
| 76, 0, 149, 0, 69, 72, 70, 63, 65, 0, |
| 0, 135, 137, 139, 80, 73, 0, 0, 66, 144, |
| 148, 148, 77, 0, 81, 148, 0, 0, 78, 0, |
| 0, -2, 0, 0, 0, 82, 0, 0, 79, 74, |
| 75, |
| } |
| var yyTok1 = []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, 22, 3, 3, 3, 27, 29, 3, |
| 13, 14, 25, 23, 11, 24, 12, 26, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 10, 9, |
| 19, 21, 20, 31, 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, 15, 3, 16, 30, 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, 17, 28, 18, |
| } |
| var yyTok2 = []int{ |
| |
| 2, 3, 4, 5, 6, 7, 8, 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, |
| } |
| var yyTok3 = []int{ |
| 0, |
| } |
| |
| //line yaccpar:1 |
| |
| /* parser for yacc output */ |
| |
| var yyDebug = 0 |
| |
| type yyLexer interface { |
| Lex(lval *yySymType) int |
| Error(s string) |
| } |
| |
| const yyFlag = -1000 |
| |
| func yyTokname(c int) string { |
| // 4 is TOKSTART above |
| if c >= 4 && c-4 < len(yyToknames) { |
| if yyToknames[c-4] != "" { |
| return yyToknames[c-4] |
| } |
| } |
| return __yyfmt__.Sprintf("tok-%v", c) |
| } |
| |
| func yyStatname(s int) string { |
| if s >= 0 && s < len(yyStatenames) { |
| if yyStatenames[s] != "" { |
| return yyStatenames[s] |
| } |
| } |
| return __yyfmt__.Sprintf("state-%v", s) |
| } |
| |
| func yylex1(lex yyLexer, lval *yySymType) int { |
| c := 0 |
| char := lex.Lex(lval) |
| if char <= 0 { |
| c = yyTok1[0] |
| goto out |
| } |
| if char < len(yyTok1) { |
| c = yyTok1[char] |
| goto out |
| } |
| if char >= yyPrivate { |
| if char < yyPrivate+len(yyTok2) { |
| c = yyTok2[char-yyPrivate] |
| goto out |
| } |
| } |
| for i := 0; i < len(yyTok3); i += 2 { |
| c = yyTok3[i+0] |
| if c == char { |
| c = yyTok3[i+1] |
| goto out |
| } |
| } |
| |
| out: |
| if c == 0 { |
| c = yyTok2[1] /* unknown char */ |
| } |
| if yyDebug >= 3 { |
| __yyfmt__.Printf("lex %s(%d)\n", yyTokname(c), uint(char)) |
| } |
| return c |
| } |
| |
| func yyParse(yylex yyLexer) int { |
| var yyn int |
| var yylval yySymType |
| var yyVAL yySymType |
| yyS := make([]yySymType, yyMaxDepth) |
| |
| Nerrs := 0 /* number of errors */ |
| Errflag := 0 /* error recovery flag */ |
| yystate := 0 |
| yychar := -1 |
| yyp := -1 |
| goto yystack |
| |
| ret0: |
| return 0 |
| |
| ret1: |
| return 1 |
| |
| yystack: |
| /* put a state and value onto the stack */ |
| if yyDebug >= 4 { |
| __yyfmt__.Printf("char %v in %v\n", yyTokname(yychar), yyStatname(yystate)) |
| } |
| |
| yyp++ |
| if yyp >= len(yyS) { |
| nyys := make([]yySymType, len(yyS)*2) |
| copy(nyys, yyS) |
| yyS = nyys |
| } |
| yyS[yyp] = yyVAL |
| yyS[yyp].yys = yystate |
| |
| yynewstate: |
| yyn = yyPact[yystate] |
| if yyn <= yyFlag { |
| goto yydefault /* simple state */ |
| } |
| if yychar < 0 { |
| yychar = yylex1(yylex, &yylval) |
| } |
| yyn += yychar |
| if yyn < 0 || yyn >= yyLast { |
| goto yydefault |
| } |
| yyn = yyAct[yyn] |
| if yyChk[yyn] == yychar { /* valid shift */ |
| yychar = -1 |
| yyVAL = yylval |
| yystate = yyn |
| if Errflag > 0 { |
| Errflag-- |
| } |
| goto yystack |
| } |
| |
| yydefault: |
| /* default state action */ |
| yyn = yyDef[yystate] |
| if yyn == -2 { |
| if yychar < 0 { |
| yychar = yylex1(yylex, &yylval) |
| } |
| |
| /* look through exception table */ |
| xi := 0 |
| for { |
| if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { |
| break |
| } |
| xi += 2 |
| } |
| for xi += 2; ; xi += 2 { |
| yyn = yyExca[xi+0] |
| if yyn < 0 || yyn == yychar { |
| break |
| } |
| } |
| yyn = yyExca[xi+1] |
| if yyn < 0 { |
| goto ret0 |
| } |
| } |
| if yyn == 0 { |
| /* error ... attempt to resume parsing */ |
| switch Errflag { |
| case 0: /* brand new error */ |
| yylex.Error("syntax error") |
| Nerrs++ |
| if yyDebug >= 1 { |
| __yyfmt__.Printf("%s", yyStatname(yystate)) |
| __yyfmt__.Printf(" saw %s\n", yyTokname(yychar)) |
| } |
| fallthrough |
| |
| case 1, 2: /* incompletely recovered error ... try again */ |
| Errflag = 3 |
| |
| /* find a state where "error" is a legal shift action */ |
| for yyp >= 0 { |
| yyn = yyPact[yyS[yyp].yys] + yyErrCode |
| if yyn >= 0 && yyn < yyLast { |
| yystate = yyAct[yyn] /* simulate a shift of "error" */ |
| if yyChk[yystate] == yyErrCode { |
| goto yystack |
| } |
| } |
| |
| /* the current p has no shift on "error", pop stack */ |
| if yyDebug >= 2 { |
| __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) |
| } |
| yyp-- |
| } |
| /* there is no state on the stack with an error shift ... abort */ |
| goto ret1 |
| |
| case 3: /* no shift yet; clobber input char */ |
| if yyDebug >= 2 { |
| __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yychar)) |
| } |
| if yychar == yyEofCode { |
| goto ret1 |
| } |
| yychar = -1 |
| goto yynewstate /* try again in the same state */ |
| } |
| } |
| |
| /* reduction by production yyn */ |
| if yyDebug >= 2 { |
| __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) |
| } |
| |
| yynt := yyn |
| yypt := yyp |
| _ = yypt // guard against "declared and not used" |
| |
| yyp -= yyR2[yyn] |
| yyVAL = yyS[yyp+1] |
| |
| /* consult goto table to find next state */ |
| yyn = yyR1[yyn] |
| yyg := yyPgo[yyn] |
| yyj := yyg + yyS[yyp].yys + 1 |
| |
| if yyj >= yyLast { |
| yystate = yyAct[yyg] |
| } else { |
| yystate = yyAct[yyj] |
| if yyChk[yystate] != -yyn { |
| yystate = yyAct[yyg] |
| } |
| } |
| // dummy call; replaced with literal code |
| switch yynt { |
| |
| case 5: |
| //line grammar.y:143 |
| { |
| lexStoreExprs(yylex, yyS[yypt-1].constexprs) |
| } |
| case 6: |
| //line grammar.y:152 |
| { |
| lexGenEOF(yylex) |
| } |
| case 7: |
| //line grammar.y:154 |
| { |
| lexGenEOF(yylex) |
| } |
| case 8: |
| //line grammar.y:156 |
| { |
| lexGenEOF(yylex) |
| } |
| case 9: |
| //line grammar.y:158 |
| { |
| lexGenEOF(yylex) |
| } |
| case 10: |
| //line grammar.y:163 |
| { |
| lexPosErrorf(yylex, Pos{}, "vdl file must start with package clause") |
| } |
| case 11: |
| //line grammar.y:165 |
| { |
| lexVDLFile(yylex).PackageDef = NamePos{Name: yyS[yypt-1].strpos.String, Pos: yyS[yypt-1].strpos.Pos} |
| } |
| case 12: |
| //line grammar.y:170 |
| { |
| lexPosErrorf(yylex, Pos{}, "config file must start with config clause") |
| } |
| case 13: |
| //line grammar.y:172 |
| { |
| // We allow "config" as an identifier; it is not a keyword. So we check |
| // manually to make sure the syntax is correct. |
| if yyS[yypt-3].strpos.String != "config" { |
| lexPosErrorf(yylex, yyS[yypt-3].strpos.Pos, "config file must start with config clause") |
| return 1 // Any non-zero code indicates an error |
| } |
| file := lexVDLFile(yylex) |
| file.PackageDef = NamePos{Name: "config", Pos: yyS[yypt-3].strpos.Pos} |
| file.ConstDefs = []*ConstDef{{Expr: yyS[yypt-1].constexpr}} |
| } |
| case 21: |
| //line grammar.y:200 |
| { |
| imps := &lexVDLFile(yylex).Imports |
| *imps = append(*imps, &Import{Path: yyS[yypt-0].strpos.String, NamePos: NamePos{Pos: yyS[yypt-0].strpos.Pos}}) |
| } |
| case 22: |
| //line grammar.y:205 |
| { |
| imps := &lexVDLFile(yylex).Imports |
| *imps = append(*imps, &Import{Path: yyS[yypt-0].strpos.String, NamePos: NamePos{Name: yyS[yypt-1].strpos.String, Pos: yyS[yypt-1].strpos.Pos}}) |
| } |
| case 39: |
| //line grammar.y:240 |
| { |
| tds := &lexVDLFile(yylex).TypeDefs |
| *tds = append(*tds, &TypeDef{Type: yyS[yypt-0].typeexpr, NamePos: NamePos{Name: yyS[yypt-1].strpos.String, Pos: yyS[yypt-1].strpos.Pos}}) |
| } |
| case 40: |
| //line grammar.y:262 |
| { |
| yyVAL.typeexpr = &TypeNamed{Name: yyS[yypt-0].strpos.String, P: yyS[yypt-0].strpos.Pos} |
| } |
| case 41: |
| //line grammar.y:264 |
| { |
| yyVAL.typeexpr = &TypeNamed{Name: "error", P: yyS[yypt-0].pos} |
| } |
| case 42: |
| //line grammar.y:266 |
| { |
| yyVAL.typeexpr = &TypeArray{Len: int(yyS[yypt-2].intpos.int.Int64()), Elem: yyS[yypt-0].typeexpr, P: yyS[yypt-3].pos} |
| } |
| case 43: |
| //line grammar.y:268 |
| { |
| yyVAL.typeexpr = &TypeList{Elem: yyS[yypt-0].typeexpr, P: yyS[yypt-2].pos} |
| } |
| case 44: |
| //line grammar.y:270 |
| { |
| yyVAL.typeexpr = &TypeEnum{Labels: yyS[yypt-2].nameposes, P: yyS[yypt-4].pos} |
| } |
| case 45: |
| //line grammar.y:272 |
| { |
| yyVAL.typeexpr = &TypeSet{Key: yyS[yypt-1].typeexpr, P: yyS[yypt-3].pos} |
| } |
| case 46: |
| //line grammar.y:274 |
| { |
| yyVAL.typeexpr = &TypeMap{Key: yyS[yypt-2].typeexpr, Elem: yyS[yypt-0].typeexpr, P: yyS[yypt-4].pos} |
| } |
| case 47: |
| //line grammar.y:276 |
| { |
| yyVAL.typeexpr = &TypeStruct{Fields: yyS[yypt-2].fields, P: yyS[yypt-4].pos} |
| } |
| case 48: |
| //line grammar.y:278 |
| { |
| yyVAL.typeexpr = &TypeStruct{P: yyS[yypt-2].pos} |
| } |
| case 49: |
| //line grammar.y:280 |
| { |
| yyVAL.typeexpr = &TypeUnion{Fields: yyS[yypt-2].fields, P: yyS[yypt-4].pos} |
| } |
| case 50: |
| //line grammar.y:282 |
| { |
| yyVAL.typeexpr = &TypeUnion{P: yyS[yypt-2].pos} |
| } |
| case 51: |
| //line grammar.y:284 |
| { |
| yyVAL.typeexpr = &TypeOptional{Base: yyS[yypt-0].typeexpr, P: yyS[yypt-1].pos} |
| } |
| case 52: |
| //line grammar.y:289 |
| { |
| yyVAL.typeexpr = yyS[yypt-0].typeexpr |
| } |
| case 53: |
| //line grammar.y:291 |
| { |
| yyVAL.typeexpr = &TypeNamed{Name: "typeobject", P: yyS[yypt-0].pos} |
| } |
| case 54: |
| //line grammar.y:295 |
| { |
| yyVAL.nameposes = []NamePos{yyS[yypt-0].namepos} |
| } |
| case 55: |
| //line grammar.y:297 |
| { |
| yyVAL.nameposes = append(yyS[yypt-2].nameposes, yyS[yypt-0].namepos) |
| } |
| case 56: |
| //line grammar.y:301 |
| { |
| yyVAL.namepos = NamePos{Name: yyS[yypt-0].strpos.String, Pos: yyS[yypt-0].strpos.Pos} |
| } |
| case 57: |
| //line grammar.y:305 |
| { |
| yyVAL.fields = yyS[yypt-0].fields |
| } |
| case 58: |
| //line grammar.y:307 |
| { |
| yyVAL.fields = append(yyS[yypt-2].fields, yyS[yypt-0].fields...) |
| } |
| case 59: |
| //line grammar.y:345 |
| { |
| if names, ok := typeListToStrList(yylex, yyS[yypt-1].typeexprs); ok { |
| for _, n := range names { |
| yyVAL.fields = append(yyVAL.fields, &Field{Type: yyS[yypt-0].typeexpr, NamePos: NamePos{Name: n.String, Pos: n.Pos}}) |
| } |
| } else { |
| lexPosErrorf(yylex, yyS[yypt-0].typeexpr.Pos(), "perhaps you forgot a comma before %q?.", yyS[yypt-0].typeexpr.String()) |
| } |
| } |
| case 60: |
| //line grammar.y:357 |
| { |
| yyVAL.typeexprs = []Type{yyS[yypt-0].typeexpr} |
| } |
| case 61: |
| //line grammar.y:359 |
| { |
| yyVAL.typeexprs = append(yyS[yypt-2].typeexprs, yyS[yypt-0].typeexpr) |
| } |
| case 62: |
| //line grammar.y:364 |
| { |
| ifs := &lexVDLFile(yylex).Interfaces |
| *ifs = append(*ifs, &Interface{NamePos: NamePos{Name: yyS[yypt-3].strpos.String, Pos: yyS[yypt-3].strpos.Pos}}) |
| } |
| case 63: |
| //line grammar.y:369 |
| { |
| yyS[yypt-2].iface.Name, yyS[yypt-2].iface.Pos = yyS[yypt-5].strpos.String, yyS[yypt-5].strpos.Pos |
| ifs := &lexVDLFile(yylex).Interfaces |
| *ifs = append(*ifs, yyS[yypt-2].iface) |
| } |
| case 64: |
| //line grammar.y:377 |
| { |
| yyVAL.iface = yyS[yypt-0].iface |
| } |
| case 65: |
| //line grammar.y:379 |
| { |
| yyS[yypt-2].iface.Embeds = append(yyS[yypt-2].iface.Embeds, yyS[yypt-0].iface.Embeds...) |
| yyS[yypt-2].iface.Methods = append(yyS[yypt-2].iface.Methods, yyS[yypt-0].iface.Methods...) |
| yyVAL.iface = yyS[yypt-2].iface |
| } |
| case 66: |
| //line grammar.y:387 |
| { |
| yyVAL.iface = &Interface{Methods: []*Method{{InArgs: yyS[yypt-3].fields, InStream: yyS[yypt-2].typeexprs[0], OutStream: yyS[yypt-2].typeexprs[1], OutArgs: yyS[yypt-1].fields, Tags: yyS[yypt-0].constexprs, NamePos: NamePos{Name: yyS[yypt-4].strpos.String, Pos: yyS[yypt-4].strpos.Pos}}}} |
| } |
| case 67: |
| //line grammar.y:389 |
| { |
| yyVAL.iface = &Interface{Embeds: []*NamePos{{Name: yyS[yypt-0].strpos.String, Pos: yyS[yypt-0].strpos.Pos}}} |
| } |
| case 68: |
| //line grammar.y:393 |
| { |
| yyVAL.fields = nil |
| } |
| case 69: |
| //line grammar.y:395 |
| { |
| yyVAL.fields = yyS[yypt-2].fields |
| } |
| case 70: |
| //line grammar.y:399 |
| { |
| for _, t := range yyS[yypt-2].typeexprs { |
| yyVAL.fields = append(yyVAL.fields, &Field{Type: t, NamePos: NamePos{Pos: t.Pos()}}) |
| } |
| } |
| case 71: |
| //line grammar.y:409 |
| { |
| yyVAL.fields = yyS[yypt-0].fields |
| } |
| case 72: |
| //line grammar.y:411 |
| { |
| yyVAL.fields = append(yyS[yypt-2].fields, yyS[yypt-0].fields...) |
| } |
| case 73: |
| //line grammar.y:422 |
| { |
| yyVAL.fields = nil |
| } |
| case 74: |
| //line grammar.y:424 |
| { |
| yyVAL.fields = yyS[yypt-4].fields |
| } |
| case 75: |
| //line grammar.y:428 |
| { |
| for _, t := range yyS[yypt-4].typeexprs { |
| yyVAL.fields = append(yyVAL.fields, &Field{Type: t, NamePos: NamePos{Pos: t.Pos()}}) |
| } |
| } |
| case 76: |
| //line grammar.y:436 |
| { |
| yyVAL.typeexprs = []Type{nil, nil} |
| } |
| case 77: |
| //line grammar.y:438 |
| { |
| yyVAL.typeexprs = []Type{nil, nil} |
| } |
| case 78: |
| //line grammar.y:440 |
| { |
| yyVAL.typeexprs = []Type{yyS[yypt-1].typeexpr, nil} |
| } |
| case 79: |
| //line grammar.y:442 |
| { |
| yyVAL.typeexprs = []Type{yyS[yypt-3].typeexpr, yyS[yypt-1].typeexpr} |
| } |
| case 80: |
| //line grammar.y:446 |
| { |
| yyVAL.constexprs = nil |
| } |
| case 81: |
| //line grammar.y:448 |
| { |
| yyVAL.constexprs = nil |
| } |
| case 82: |
| //line grammar.y:450 |
| { |
| yyVAL.constexprs = yyS[yypt-2].constexprs |
| } |
| case 83: |
| //line grammar.y:454 |
| { |
| yyVAL.constexprs = []ConstExpr{yyS[yypt-0].constexpr} |
| } |
| case 84: |
| //line grammar.y:456 |
| { |
| yyVAL.constexprs = append(yyS[yypt-2].constexprs, yyS[yypt-0].constexpr) |
| } |
| case 87: |
| //line grammar.y:465 |
| { |
| cds := &lexVDLFile(yylex).ConstDefs |
| *cds = append(*cds, &ConstDef{Expr: yyS[yypt-0].constexpr, NamePos: NamePos{Name: yyS[yypt-2].strpos.String, Pos: yyS[yypt-2].strpos.Pos}}) |
| } |
| case 88: |
| //line grammar.y:472 |
| { |
| yyVAL.constexpr = yyS[yypt-0].constexpr |
| } |
| case 89: |
| //line grammar.y:474 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"||", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 90: |
| //line grammar.y:476 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"&&", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 91: |
| //line grammar.y:478 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"<", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 92: |
| //line grammar.y:480 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{">", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 93: |
| //line grammar.y:482 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"<=", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 94: |
| //line grammar.y:484 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{">=", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 95: |
| //line grammar.y:486 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"!=", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 96: |
| //line grammar.y:488 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"==", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 97: |
| //line grammar.y:490 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"+", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 98: |
| //line grammar.y:492 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"-", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 99: |
| //line grammar.y:494 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"*", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 100: |
| //line grammar.y:496 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"/", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 101: |
| //line grammar.y:498 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"%", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 102: |
| //line grammar.y:500 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"|", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 103: |
| //line grammar.y:502 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"&", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 104: |
| //line grammar.y:504 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"^", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 105: |
| //line grammar.y:506 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{"<<", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 106: |
| //line grammar.y:508 |
| { |
| yyVAL.constexpr = &ConstBinaryOp{">>", yyS[yypt-2].constexpr, yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 107: |
| //line grammar.y:512 |
| { |
| yyVAL.constexpr = yyS[yypt-0].constexpr |
| } |
| case 108: |
| //line grammar.y:514 |
| { |
| yyVAL.constexpr = &ConstUnaryOp{"!", yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 109: |
| //line grammar.y:516 |
| { |
| yyVAL.constexpr = &ConstUnaryOp{"+", yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 110: |
| //line grammar.y:518 |
| { |
| yyVAL.constexpr = &ConstUnaryOp{"-", yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 111: |
| //line grammar.y:520 |
| { |
| yyVAL.constexpr = &ConstUnaryOp{"^", yyS[yypt-0].constexpr, yyS[yypt-1].pos} |
| } |
| case 112: |
| //line grammar.y:522 |
| { |
| yyVAL.constexpr = &ConstTypeConv{yyS[yypt-3].typeexpr, yyS[yypt-1].constexpr, yyS[yypt-3].typeexpr.Pos()} |
| } |
| case 113: |
| //line grammar.y:524 |
| { |
| yyVAL.constexpr = &ConstTypeObject{yyS[yypt-1].typeexpr, yyS[yypt-3].pos} |
| } |
| case 114: |
| //line grammar.y:529 |
| { |
| yyVAL.constexpr = &ConstLit{yyS[yypt-0].strpos.String, yyS[yypt-0].strpos.Pos} |
| } |
| case 115: |
| //line grammar.y:531 |
| { |
| yyVAL.constexpr = &ConstLit{yyS[yypt-0].intpos.int, yyS[yypt-0].intpos.pos} |
| } |
| case 116: |
| //line grammar.y:533 |
| { |
| yyVAL.constexpr = &ConstLit{yyS[yypt-0].ratpos.rat, yyS[yypt-0].ratpos.pos} |
| } |
| case 117: |
| //line grammar.y:535 |
| { |
| yyVAL.constexpr = &ConstLit{yyS[yypt-0].imagpos.imag, yyS[yypt-0].imagpos.pos} |
| } |
| case 118: |
| //line grammar.y:537 |
| { |
| yyVAL.constexpr = &ConstNamed{yyS[yypt-0].strpos.String, yyS[yypt-0].strpos.Pos} |
| } |
| case 119: |
| //line grammar.y:539 |
| { |
| yyVAL.constexpr = yyS[yypt-0].complit |
| } |
| case 120: |
| //line grammar.y:541 |
| { |
| lexPosErrorf(yylex, yyS[yypt-1].pos, "cannot apply selector operator to unnamed constant") |
| } |
| case 121: |
| //line grammar.y:543 |
| { |
| lexPosErrorf(yylex, yyS[yypt-2].pos, "cannot apply index operator to unnamed constant") |
| } |
| case 122: |
| //line grammar.y:545 |
| { |
| yyVAL.constexpr = &ConstIndexed{&ConstNamed{yyS[yypt-3].strpos.String, yyS[yypt-3].strpos.Pos}, yyS[yypt-1].constexpr, yyS[yypt-3].strpos.Pos} |
| } |
| case 123: |
| //line grammar.y:547 |
| { |
| yyVAL.constexpr = yyS[yypt-1].constexpr |
| } |
| case 124: |
| //line grammar.y:551 |
| { |
| yyVAL.complit = &ConstCompositeLit{yyS[yypt-2].typeexpr, nil, yyS[yypt-1].pos} |
| } |
| case 125: |
| //line grammar.y:553 |
| { |
| yyVAL.complit = &ConstCompositeLit{yyS[yypt-4].typeexpr, yyS[yypt-2].kvlits, yyS[yypt-3].pos} |
| } |
| case 126: |
| //line grammar.y:557 |
| { |
| yyVAL.kvlits = []KVLit{yyS[yypt-0].kvlit} |
| } |
| case 127: |
| //line grammar.y:559 |
| { |
| yyVAL.kvlits = append(yyS[yypt-2].kvlits, yyS[yypt-0].kvlit) |
| } |
| case 128: |
| //line grammar.y:563 |
| { |
| yyVAL.kvlit = KVLit{Value: yyS[yypt-0].constexpr} |
| } |
| case 129: |
| //line grammar.y:565 |
| { |
| yyVAL.kvlit = KVLit{Key: yyS[yypt-2].constexpr, Value: yyS[yypt-0].constexpr} |
| } |
| case 132: |
| //line grammar.y:574 |
| { |
| // Create *ErrorDef starting with a copy of error_details, filling in the |
| // name and params |
| ed := yyS[yypt-0].errordef |
| ed.NamePos = NamePos{Name: yyS[yypt-2].strpos.String, Pos: yyS[yypt-2].strpos.Pos} |
| ed.Params = yyS[yypt-1].fields |
| eds := &lexVDLFile(yylex).ErrorDefs |
| *eds = append(*eds, &ed) |
| } |
| case 133: |
| //line grammar.y:586 |
| { |
| yyVAL.errordef = ErrorDef{} |
| } |
| case 134: |
| //line grammar.y:588 |
| { |
| yyVAL.errordef = ErrorDef{} |
| } |
| case 135: |
| //line grammar.y:590 |
| { |
| yyVAL.errordef = yyS[yypt-2].errordef |
| } |
| case 136: |
| //line grammar.y:594 |
| { |
| yyVAL.errordef = yyS[yypt-0].errordef |
| } |
| case 137: |
| //line grammar.y:596 |
| { |
| // Merge each ErrorDef in-order to build the final ErrorDef. |
| yyVAL.errordef = yyS[yypt-2].errordef |
| switch { |
| case len(yyS[yypt-0].errordef.Actions) > 0: |
| yyVAL.errordef.Actions = append(yyVAL.errordef.Actions, yyS[yypt-0].errordef.Actions...) |
| case len(yyS[yypt-0].errordef.Formats) > 0: |
| yyVAL.errordef.Formats = append(yyVAL.errordef.Formats, yyS[yypt-0].errordef.Formats...) |
| } |
| } |
| case 138: |
| //line grammar.y:609 |
| { |
| yyVAL.errordef = ErrorDef{Actions: []StringPos{yyS[yypt-0].strpos}} |
| } |
| case 139: |
| //line grammar.y:611 |
| { |
| yyVAL.errordef = ErrorDef{Formats: []LangFmt{{Lang: yyS[yypt-2].strpos, Fmt: yyS[yypt-0].strpos}}} |
| } |
| case 140: |
| //line grammar.y:623 |
| { |
| yyVAL.strpos = yyS[yypt-0].strpos |
| } |
| case 141: |
| //line grammar.y:625 |
| { |
| yyVAL.strpos = StringPos{"\"" + yyS[yypt-2].strpos.String + "\"." + yyS[yypt-0].strpos.String, yyS[yypt-2].strpos.Pos} |
| } |
| case 142: |
| //line grammar.y:630 |
| { |
| yyVAL.strpos = yyS[yypt-0].strpos |
| } |
| case 143: |
| //line grammar.y:632 |
| { |
| yyVAL.strpos = StringPos{yyS[yypt-2].strpos.String + "." + yyS[yypt-0].strpos.String, yyS[yypt-2].strpos.Pos} |
| } |
| case 144: |
| //line grammar.y:636 |
| { |
| yyVAL.typeexpr = nil |
| } |
| case 145: |
| //line grammar.y:638 |
| { |
| yyVAL.typeexpr = yyS[yypt-0].typeexpr |
| } |
| } |
| goto yystack /* stack new state and value */ |
| } |