Commit 82e1651a authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/internal/gc, cmd/yacc: merge yaccerrors.go into cmd/yacc

This extends cmd/yacc with support for

	%error { tokens } : message

syntax to specify custom error messages to use instead of the default
generic ones.  This allows merging go.errors into go.y and removing
the yaccerrors.go tool.

Updates #9968.

Change-Id: I781219c568b86472755f877f48401eaeab00ead5
Reviewed-on: https://go-review.googlesource.com/8563Reviewed-by: default avatarRuss Cox <rsc@golang.org>
parent d4ed3061
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Example-based syntax error messages.
// See yaccerrors.go.
package gc
var yymsg = []struct {
yystate int
yychar int
msg string
}{
// Each line of the form % token list
// is converted by yaccerrors.go into the yystate and yychar caused
// by that token list.
% loadsys package LIMPORT '(' LLITERAL import_package import_there ','
"unexpected comma during import block"},
% loadsys package LIMPORT LNAME ';'
"missing import path; require quoted string"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header ';'
"missing { after if clause"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LSWITCH if_header ';'
"missing { after switch clause"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LFOR for_header ';'
"missing { after for clause"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LFOR ';' LBODY
"missing { after for clause"},
% loadsys package imports LFUNC LNAME '(' ')' ';' '{'
"unexpected semicolon or newline before {"},
% loadsys package imports LTYPE LNAME ';'
"unexpected semicolon or newline in type declaration"},
% loadsys package imports LCHAN '}'
"unexpected } in channel type"},
% loadsys package imports LCHAN ')'
"unexpected ) in channel type"},
% loadsys package imports LCHAN ','
"unexpected comma in channel type"},
% loadsys package imports LFUNC LNAME '(' ')' '{' if_stmt ';' LELSE
"unexpected semicolon or newline before else"},
% loadsys package imports LTYPE LNAME LINTERFACE '{' LNAME ',' LNAME
"name list not allowed in interface type"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LFOR LVAR LNAME '=' LNAME
"var declaration not allowed in for initializer"},
% loadsys package imports LVAR LNAME '[' ']' LNAME '{'
"unexpected { at end of statement"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LVAR LNAME '[' ']' LNAME '{'
"unexpected { at end of statement"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LDEFER LNAME ';'
"argument to go/defer must be function call"},
% loadsys package imports LVAR LNAME '=' LNAME '{' LNAME ';'
"need trailing comma before newline in composite literal"},
% loadsys package imports LVAR LNAME '=' comptype '{' LNAME ';'
"need trailing comma before newline in composite literal"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LFUNC LNAME
"nested func not allowed"},
% loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header loop_body LELSE ';'
"else must be followed by if or statement block"},
}
......@@ -117,7 +117,68 @@ import (
%left ')'
%left PreferToRightParen
// TODO(rsc): Add %error-verbose
%error loadsys package LIMPORT '(' LLITERAL import_package import_there ',':
"unexpected comma during import block"
%error loadsys package LIMPORT LNAME ';':
"missing import path; require quoted string"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header ';':
"missing { after if clause"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LSWITCH if_header ';':
"missing { after switch clause"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LFOR for_header ';':
"missing { after for clause"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LFOR ';' LBODY:
"missing { after for clause"
%error loadsys package imports LFUNC LNAME '(' ')' ';' '{':
"unexpected semicolon or newline before {"
%error loadsys package imports LTYPE LNAME ';':
"unexpected semicolon or newline in type declaration"
%error loadsys package imports LCHAN '}':
"unexpected } in channel type"
%error loadsys package imports LCHAN ')':
"unexpected ) in channel type"
%error loadsys package imports LCHAN ',':
"unexpected comma in channel type"
%error loadsys package imports LFUNC LNAME '(' ')' '{' if_stmt ';' LELSE:
"unexpected semicolon or newline before else"
%error loadsys package imports LTYPE LNAME LINTERFACE '{' LNAME ',' LNAME:
"name list not allowed in interface type"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LFOR LVAR LNAME '=' LNAME:
"var declaration not allowed in for initializer"
%error loadsys package imports LVAR LNAME '[' ']' LNAME '{':
"unexpected { at end of statement"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LVAR LNAME '[' ']' LNAME '{':
"unexpected { at end of statement"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LDEFER LNAME ';':
"argument to go/defer must be function call"
%error loadsys package imports LVAR LNAME '=' LNAME '{' LNAME ';':
"need trailing comma before newline in composite literal"
%error loadsys package imports LVAR LNAME '=' comptype '{' LNAME ';':
"need trailing comma before newline in composite literal"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LFUNC LNAME:
"nested func not allowed"
%error loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header loop_body LELSE ';':
"else must be followed by if or statement block"
%%
file:
......
......@@ -3,7 +3,6 @@
// license that can be found in the LICENSE file.
//go:generate go tool yacc go.y
//go:generate go run yaccerrors.go
//go:generate go run mkbuiltin.go runtime unsafe
package gc
......
......@@ -125,13 +125,6 @@ func Yyerror(format string, args ...interface{}) {
if strings.HasPrefix(msg, "syntax error") {
nsyntaxerrors++
yystate := theparser.(*yyParserImpl).state()
yychar := theparser.Lookahead()
if Debug['x'] != 0 {
fmt.Printf("yyerror: yystate=%d yychar=%d\n", yystate, yychar)
}
// An unexpected EOF caused a syntax error. Use the previous
// line number since getc generated a fake newline character.
if curio.eofnl != 0 {
......@@ -144,14 +137,6 @@ func Yyerror(format string, args ...interface{}) {
}
yyerror_lastsyntax = int(lexlineno)
// look for parse state-specific errors in list (see go.errors).
for i := range yymsg {
if yymsg[i].yystate == yystate && yymsg[i].yychar == yychar {
yyerrorl(int(lexlineno), "syntax error: %s", yymsg[i].msg)
return
}
}
// plain "syntax error" gets "near foo" added
if msg == "syntax error" {
yyerrorl(int(lexlineno), "syntax error near %s", lexbuf.String())
......
......@@ -154,7 +154,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyMaxDepth = 200
//line go.y:2243
//line go.y:2304
func fixlbrace(lbr int) {
// If the opening brace was an LBODY,
// set up for another one now that we're done.
......@@ -857,6 +857,34 @@ var yyTok3 = [...]int{
0,
}
var yyErrorMessages = [...]struct {
state int
token int
msg string
}{
{332, 76, "unexpected comma during import block"},
{89, 63, "missing import path; require quoted string"},
{390, 63, "missing { after if clause"},
{387, 63, "missing { after switch clause"},
{279, 63, "missing { after for clause"},
{498, 36, "missing { after for clause"},
{17, 68, "unexpected semicolon or newline before {"},
{111, 63, "unexpected semicolon or newline in type declaration"},
{78, 69, "unexpected } in channel type"},
{78, 61, "unexpected ) in channel type"},
{78, 76, "unexpected comma in channel type"},
{416, 15, "unexpected semicolon or newline before else"},
{329, 76, "name list not allowed in interface type"},
{279, 33, "var declaration not allowed in for initializer"},
{25, 68, "unexpected { at end of statement"},
{371, 68, "unexpected { at end of statement"},
{122, 63, "argument to go/defer must be function call"},
{398, 63, "need trailing comma before newline in composite literal"},
{414, 63, "need trailing comma before newline in composite literal"},
{124, 25, "nested func not allowed"},
{650, 63, "else must be followed by if or statement block"},
}
//line yaccpar:1
/* parser for yacc output */
......@@ -878,7 +906,6 @@ type yyParser interface {
type yyParserImpl struct {
lookahead func() int
state func() int
}
func (p *yyParserImpl) Lookahead() int {
......@@ -888,7 +915,6 @@ func (p *yyParserImpl) Lookahead() int {
func yyNewParser() yyParser {
p := &yyParserImpl{
lookahead: func() int { return -1 },
state: func() int { return -1 },
}
return p
}
......@@ -919,6 +945,13 @@ func yyErrorMessage(state, lookAhead int) string {
if !yyErrorVerbose {
return "syntax error"
}
for _, e := range yyErrorMessages {
if e.state == state && e.token == lookAhead {
return "syntax error: " + e.msg
}
}
res := "syntax error: unexpected " + yyTokname(lookAhead)
// To match Bison, suggest at most four expected tokens.
......@@ -1021,7 +1054,6 @@ func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
yystate := 0
yychar := -1
yytoken := -1 // yychar translated into internal numbering
yyrcvr.state = func() int { return yystate }
yyrcvr.lookahead = func() int { return yychar }
defer func() {
// Make sure we report no lookahead when not parsing.
......@@ -1188,13 +1220,13 @@ yydefault:
case 1:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:128
//line go.y:189
{
xtop = concat(xtop, yyDollar[4].list)
}
case 2:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:134
//line go.y:195
{
prevlineno = lineno
Yyerror("package statement must be first")
......@@ -1202,13 +1234,13 @@ yydefault:
}
case 3:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:140
//line go.y:201
{
mkpackage(yyDollar[2].sym.Name)
}
case 4:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:150
//line go.y:211
{
importpkg = Runtimepkg
......@@ -1221,13 +1253,13 @@ yydefault:
}
case 5:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:162
//line go.y:223
{
importpkg = nil
}
case 11:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:176
//line go.y:237
{
ipkg := importpkg
my := importmyname
......@@ -1264,7 +1296,7 @@ yydefault:
}
case 12:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:211
//line go.y:272
{
// When an invalid import path is passed to importfile,
// it calls Yyerror and then sets up a fake import with
......@@ -1276,7 +1308,7 @@ yydefault:
}
case 15:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:227
//line go.y:288
{
// import with original name
yyVAL.i = parserline()
......@@ -1285,7 +1317,7 @@ yydefault:
}
case 16:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:234
//line go.y:295
{
// import with given name
yyVAL.i = parserline()
......@@ -1294,7 +1326,7 @@ yydefault:
}
case 17:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:241
//line go.y:302
{
// import into my name space
yyVAL.i = parserline()
......@@ -1303,7 +1335,7 @@ yydefault:
}
case 18:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:250
//line go.y:311
{
if importpkg.Name == "" {
importpkg.Name = yyDollar[2].sym.Name
......@@ -1320,7 +1352,7 @@ yydefault:
}
case 20:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:267
//line go.y:328
{
if yyDollar[1].sym.Name == "safe" {
curio.importsafe = true
......@@ -1328,64 +1360,64 @@ yydefault:
}
case 21:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:274
//line go.y:335
{
defercheckwidth()
}
case 22:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:278
//line go.y:339
{
resumecheckwidth()
unimportfile()
}
case 23:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:287
//line go.y:348
{
Yyerror("empty top-level declaration")
yyVAL.list = nil
}
case 25:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:293
//line go.y:354
{
yyVAL.list = list1(yyDollar[1].node)
}
case 26:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:297
//line go.y:358
{
Yyerror("non-declaration statement outside function body")
yyVAL.list = nil
}
case 27:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:302
//line go.y:363
{
yyVAL.list = nil
}
case 28:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:308
//line go.y:369
{
yyVAL.list = yyDollar[2].list
}
case 29:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:312
//line go.y:373
{
yyVAL.list = yyDollar[3].list
}
case 30:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:316
//line go.y:377
{
yyVAL.list = nil
}
case 31:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:320
//line go.y:381
{
yyVAL.list = yyDollar[2].list
iota_ = -100000
......@@ -1393,7 +1425,7 @@ yydefault:
}
case 32:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:326
//line go.y:387
{
yyVAL.list = yyDollar[3].list
iota_ = -100000
......@@ -1401,7 +1433,7 @@ yydefault:
}
case 33:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:332
//line go.y:393
{
yyVAL.list = concat(yyDollar[3].list, yyDollar[5].list)
iota_ = -100000
......@@ -1409,80 +1441,80 @@ yydefault:
}
case 34:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:338
//line go.y:399
{
yyVAL.list = nil
iota_ = -100000
}
case 35:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:343
//line go.y:404
{
yyVAL.list = list1(yyDollar[2].node)
}
case 36:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:347
//line go.y:408
{
yyVAL.list = yyDollar[3].list
}
case 37:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:351
//line go.y:412
{
yyVAL.list = nil
}
case 38:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:357
//line go.y:418
{
iota_ = 0
}
case 39:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:363
//line go.y:424
{
yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, nil)
}
case 40:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:367
//line go.y:428
{
yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
}
case 41:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:371
//line go.y:432
{
yyVAL.list = variter(yyDollar[1].list, nil, yyDollar[3].list)
}
case 42:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:377
//line go.y:438
{
yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
}
case 43:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:381
//line go.y:442
{
yyVAL.list = constiter(yyDollar[1].list, nil, yyDollar[3].list)
}
case 45:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:388
//line go.y:449
{
yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, nil)
}
case 46:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:392
//line go.y:453
{
yyVAL.list = constiter(yyDollar[1].list, nil, nil)
}
case 47:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:398
//line go.y:459
{
// different from dclname because the name
// becomes visible right here, not at the end
......@@ -1491,13 +1523,13 @@ yydefault:
}
case 48:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:407
//line go.y:468
{
yyVAL.node = typedcl1(yyDollar[1].node, yyDollar[2].node, true)
}
case 49:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:413
//line go.y:474
{
yyVAL.node = yyDollar[1].node
......@@ -1513,14 +1545,14 @@ yydefault:
}
case 50:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:427
//line go.y:488
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, yyDollar[3].node)
yyVAL.node.Etype = uint8(yyDollar[2].i) // rathole to pass opcode
}
case 51:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:432
//line go.y:493
{
if yyDollar[1].list.Next == nil && yyDollar[3].list.Next == nil {
// simple
......@@ -1534,7 +1566,7 @@ yydefault:
}
case 52:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:444
//line go.y:505
{
if yyDollar[3].list.N.Op == OTYPESW {
yyVAL.node = Nod(OTYPESW, nil, yyDollar[3].list.N.Right)
......@@ -1554,7 +1586,7 @@ yydefault:
}
case 53:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:462
//line go.y:523
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
yyVAL.node.Implicit = true
......@@ -1562,7 +1594,7 @@ yydefault:
}
case 54:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:468
//line go.y:529
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
yyVAL.node.Implicit = true
......@@ -1570,7 +1602,7 @@ yydefault:
}
case 55:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:476
//line go.y:537
{
var n, nn *Node
......@@ -1595,7 +1627,7 @@ yydefault:
}
case 56:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:499
//line go.y:560
{
var n *Node
......@@ -1615,7 +1647,7 @@ yydefault:
}
case 57:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:517
//line go.y:578
{
// will be converted to OCASE
// right will point to next case
......@@ -1626,7 +1658,7 @@ yydefault:
}
case 58:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:526
//line go.y:587
{
var n, nn *Node
......@@ -1647,13 +1679,13 @@ yydefault:
}
case 59:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:547
//line go.y:608
{
markdcl()
}
case 60:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:551
//line go.y:612
{
if yyDollar[3].list == nil {
yyVAL.node = Nod(OEMPTY, nil, nil)
......@@ -1664,7 +1696,7 @@ yydefault:
}
case 61:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:562
//line go.y:623
{
// If the last token read by the lexer was consumed
// as part of the case, clear it (parser has cleared yychar).
......@@ -1677,7 +1709,7 @@ yydefault:
}
case 62:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:573
//line go.y:634
{
// This is the only place in the language where a statement
// list is not allowed to drop the final semicolon, because
......@@ -1697,32 +1729,32 @@ yydefault:
}
case 63:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:592
//line go.y:653
{
yyVAL.list = nil
}
case 64:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:596
//line go.y:657
{
yyVAL.list = list(yyDollar[1].list, yyDollar[2].node)
}
case 65:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:602
//line go.y:663
{
markdcl()
}
case 66:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:606
//line go.y:667
{
yyVAL.list = yyDollar[3].list
popdcl()
}
case 67:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:613
//line go.y:674
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
yyVAL.node.List = yyDollar[1].list
......@@ -1730,7 +1762,7 @@ yydefault:
}
case 68:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:619
//line go.y:680
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
yyVAL.node.List = yyDollar[1].list
......@@ -1739,14 +1771,14 @@ yydefault:
}
case 69:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:626
//line go.y:687
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[2].node)
yyVAL.node.Etype = 0 // := flag
}
case 70:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:633
//line go.y:694
{
// init ; test ; incr
if yyDollar[5].node != nil && yyDollar[5].node.Colas {
......@@ -1761,7 +1793,7 @@ yydefault:
}
case 71:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:646
//line go.y:707
{
// normal test
yyVAL.node = Nod(OFOR, nil, nil)
......@@ -1769,27 +1801,27 @@ yydefault:
}
case 73:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:655
//line go.y:716
{
yyVAL.node = yyDollar[1].node
yyVAL.node.Nbody = concat(yyVAL.node.Nbody, yyDollar[2].list)
}
case 74:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:662
//line go.y:723
{
markdcl()
}
case 75:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:666
//line go.y:727
{
yyVAL.node = yyDollar[3].node
popdcl()
}
case 76:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:673
//line go.y:734
{
// test
yyVAL.node = Nod(OIF, nil, nil)
......@@ -1797,7 +1829,7 @@ yydefault:
}
case 77:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:679
//line go.y:740
{
// init ; test
yyVAL.node = Nod(OIF, nil, nil)
......@@ -1808,13 +1840,13 @@ yydefault:
}
case 78:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:691
//line go.y:752
{
markdcl()
}
case 79:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:695
//line go.y:756
{
if yyDollar[3].node.Ntest == nil {
Yyerror("missing condition in if statement")
......@@ -1822,13 +1854,13 @@ yydefault:
}
case 80:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:701
//line go.y:762
{
yyDollar[3].node.Nbody = yyDollar[5].list
}
case 81:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:705
//line go.y:766
{
var n *Node
var nn *NodeList
......@@ -1846,13 +1878,13 @@ yydefault:
}
case 82:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:723
//line go.y:784
{
markdcl()
}
case 83:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:727
//line go.y:788
{
if yyDollar[4].node.Ntest == nil {
Yyerror("missing condition in if statement")
......@@ -1862,25 +1894,25 @@ yydefault:
}
case 84:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:736
//line go.y:797
{
yyVAL.list = nil
}
case 85:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:740
//line go.y:801
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
}
case 86:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:745
//line go.y:806
{
yyVAL.list = nil
}
case 87:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:749
//line go.y:810
{
l := &NodeList{N: yyDollar[2].node}
l.End = l
......@@ -1888,13 +1920,13 @@ yydefault:
}
case 88:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:757
//line go.y:818
{
markdcl()
}
case 89:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:761
//line go.y:822
{
var n *Node
n = yyDollar[3].node.Ntest
......@@ -1905,7 +1937,7 @@ yydefault:
}
case 90:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:770
//line go.y:831
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Op = OSWITCH
......@@ -1915,13 +1947,13 @@ yydefault:
}
case 91:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:780
//line go.y:841
{
typesw = Nod(OXXX, typesw, nil)
}
case 92:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:784
//line go.y:845
{
yyVAL.node = Nod(OSELECT, nil, nil)
yyVAL.node.Lineno = typesw.Lineno
......@@ -1930,133 +1962,133 @@ yydefault:
}
case 94:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:797
//line go.y:858
{
yyVAL.node = Nod(OOROR, yyDollar[1].node, yyDollar[3].node)
}
case 95:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:801
//line go.y:862
{
yyVAL.node = Nod(OANDAND, yyDollar[1].node, yyDollar[3].node)
}
case 96:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:805
//line go.y:866
{
yyVAL.node = Nod(OEQ, yyDollar[1].node, yyDollar[3].node)
}
case 97:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:809
//line go.y:870
{
yyVAL.node = Nod(ONE, yyDollar[1].node, yyDollar[3].node)
}
case 98:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:813
//line go.y:874
{
yyVAL.node = Nod(OLT, yyDollar[1].node, yyDollar[3].node)
}
case 99:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:817
//line go.y:878
{
yyVAL.node = Nod(OLE, yyDollar[1].node, yyDollar[3].node)
}
case 100:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:821
//line go.y:882
{
yyVAL.node = Nod(OGE, yyDollar[1].node, yyDollar[3].node)
}
case 101:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:825
//line go.y:886
{
yyVAL.node = Nod(OGT, yyDollar[1].node, yyDollar[3].node)
}
case 102:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:829
//line go.y:890
{
yyVAL.node = Nod(OADD, yyDollar[1].node, yyDollar[3].node)
}
case 103:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:833
//line go.y:894
{
yyVAL.node = Nod(OSUB, yyDollar[1].node, yyDollar[3].node)
}
case 104:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:837
//line go.y:898
{
yyVAL.node = Nod(OOR, yyDollar[1].node, yyDollar[3].node)
}
case 105:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:841
//line go.y:902
{
yyVAL.node = Nod(OXOR, yyDollar[1].node, yyDollar[3].node)
}
case 106:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:845
//line go.y:906
{
yyVAL.node = Nod(OMUL, yyDollar[1].node, yyDollar[3].node)
}
case 107:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:849
//line go.y:910
{
yyVAL.node = Nod(ODIV, yyDollar[1].node, yyDollar[3].node)
}
case 108:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:853
//line go.y:914
{
yyVAL.node = Nod(OMOD, yyDollar[1].node, yyDollar[3].node)
}
case 109:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:857
//line go.y:918
{
yyVAL.node = Nod(OAND, yyDollar[1].node, yyDollar[3].node)
}
case 110:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:861
//line go.y:922
{
yyVAL.node = Nod(OANDNOT, yyDollar[1].node, yyDollar[3].node)
}
case 111:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:865
//line go.y:926
{
yyVAL.node = Nod(OLSH, yyDollar[1].node, yyDollar[3].node)
}
case 112:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:869
//line go.y:930
{
yyVAL.node = Nod(ORSH, yyDollar[1].node, yyDollar[3].node)
}
case 113:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:874
//line go.y:935
{
yyVAL.node = Nod(OSEND, yyDollar[1].node, yyDollar[3].node)
}
case 115:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:881
//line go.y:942
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 116:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:885
//line go.y:946
{
if yyDollar[2].node.Op == OCOMPLIT {
// Special case for &T{...}: turn into (*T){...}.
......@@ -2069,57 +2101,57 @@ yydefault:
}
case 117:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:896
//line go.y:957
{
yyVAL.node = Nod(OPLUS, yyDollar[2].node, nil)
}
case 118:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:900
//line go.y:961
{
yyVAL.node = Nod(OMINUS, yyDollar[2].node, nil)
}
case 119:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:904
//line go.y:965
{
yyVAL.node = Nod(ONOT, yyDollar[2].node, nil)
}
case 120:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:908
//line go.y:969
{
Yyerror("the bitwise complement operator is ^")
yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
}
case 121:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:913
//line go.y:974
{
yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
}
case 122:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:917
//line go.y:978
{
yyVAL.node = Nod(ORECV, yyDollar[2].node, nil)
}
case 123:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:927
//line go.y:988
{
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
}
case 124:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:931
//line go.y:992
{
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
yyVAL.node.List = yyDollar[3].list
}
case 125:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:936
//line go.y:997
{
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
yyVAL.node.List = yyDollar[3].list
......@@ -2127,13 +2159,13 @@ yydefault:
}
case 126:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:944
//line go.y:1005
{
yyVAL.node = nodlit(yyDollar[1].val)
}
case 128:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:949
//line go.y:1010
{
if yyDollar[1].node.Op == OPACK {
var s *Sym
......@@ -2146,31 +2178,31 @@ yydefault:
}
case 129:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:960
//line go.y:1021
{
yyVAL.node = Nod(ODOTTYPE, yyDollar[1].node, yyDollar[4].node)
}
case 130:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:964
//line go.y:1025
{
yyVAL.node = Nod(OTYPESW, nil, yyDollar[1].node)
}
case 131:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:968
//line go.y:1029
{
yyVAL.node = Nod(OINDEX, yyDollar[1].node, yyDollar[3].node)
}
case 132:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:972
//line go.y:1033
{
yyVAL.node = Nod(OSLICE, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, yyDollar[5].node))
}
case 133:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:976
//line go.y:1037
{
if yyDollar[5].node == nil {
Yyerror("middle index required in 3-index slice")
......@@ -2182,7 +2214,7 @@ yydefault:
}
case 135:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:987
//line go.y:1048
{
// conversion
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
......@@ -2190,7 +2222,7 @@ yydefault:
}
case 136:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:993
//line go.y:1054
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Right = yyDollar[1].node
......@@ -2199,7 +2231,7 @@ yydefault:
}
case 137:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1000
//line go.y:1061
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Right = yyDollar[1].node
......@@ -2207,7 +2239,7 @@ yydefault:
}
case 138:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:1006
//line go.y:1067
{
Yyerror("cannot parenthesize type in composite literal")
yyVAL.node = yyDollar[5].node
......@@ -2216,7 +2248,7 @@ yydefault:
}
case 140:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1015
//line go.y:1076
{
// composite expression.
// make node early so we get the right line number.
......@@ -2224,13 +2256,13 @@ yydefault:
}
case 141:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1023
//line go.y:1084
{
yyVAL.node = Nod(OKEY, yyDollar[1].node, yyDollar[3].node)
}
case 142:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1029
//line go.y:1090
{
// These nodes do not carry line numbers.
// Since a composite literal commonly spans several lines,
......@@ -2245,21 +2277,21 @@ yydefault:
}
case 143:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1042
//line go.y:1103
{
yyVAL.node = yyDollar[2].node
yyVAL.node.List = yyDollar[3].list
}
case 145:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1050
//line go.y:1111
{
yyVAL.node = yyDollar[2].node
yyVAL.node.List = yyDollar[3].list
}
case 147:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1058
//line go.y:1119
{
yyVAL.node = yyDollar[2].node
......@@ -2273,19 +2305,19 @@ yydefault:
}
case 151:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1079
//line go.y:1140
{
yyVAL.i = LBODY
}
case 152:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1083
//line go.y:1144
{
yyVAL.i = '{'
}
case 153:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1094
//line go.y:1155
{
if yyDollar[1].sym == nil {
yyVAL.node = nil
......@@ -2295,19 +2327,19 @@ yydefault:
}
case 154:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1104
//line go.y:1165
{
yyVAL.node = dclname(yyDollar[1].sym)
}
case 155:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1109
//line go.y:1170
{
yyVAL.node = nil
}
case 157:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1116
//line go.y:1177
{
yyVAL.sym = yyDollar[1].sym
// during imports, unqualified non-exported identifiers are from builtinpkg
......@@ -2317,13 +2349,13 @@ yydefault:
}
case 159:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1125
//line go.y:1186
{
yyVAL.sym = nil
}
case 160:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1131
//line go.y:1192
{
var p *Pkg
......@@ -2339,7 +2371,7 @@ yydefault:
}
case 161:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1145
//line go.y:1206
{
var p *Pkg
......@@ -2355,7 +2387,7 @@ yydefault:
}
case 162:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1161
//line go.y:1222
{
yyVAL.node = oldname(yyDollar[1].sym)
if yyVAL.node.Pack != nil {
......@@ -2364,38 +2396,38 @@ yydefault:
}
case 164:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1182
//line go.y:1243
{
Yyerror("final argument in variadic function missing type")
yyVAL.node = Nod(ODDD, typenod(typ(TINTER)), nil)
}
case 165:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1187
//line go.y:1248
{
yyVAL.node = Nod(ODDD, yyDollar[2].node, nil)
}
case 171:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1198
//line go.y:1259
{
yyVAL.node = yyDollar[2].node
}
case 175:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1207
//line go.y:1268
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 180:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1217
//line go.y:1278
{
yyVAL.node = yyDollar[2].node
}
case 190:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1238
//line go.y:1299
{
if yyDollar[1].node.Op == OPACK {
var s *Sym
......@@ -2408,53 +2440,53 @@ yydefault:
}
case 191:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1251
//line go.y:1312
{
yyVAL.node = Nod(OTARRAY, yyDollar[2].node, yyDollar[4].node)
}
case 192:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1255
//line go.y:1316
{
// array literal of nelem
yyVAL.node = Nod(OTARRAY, Nod(ODDD, nil, nil), yyDollar[4].node)
}
case 193:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1260
//line go.y:1321
{
yyVAL.node = Nod(OTCHAN, yyDollar[2].node, nil)
yyVAL.node.Etype = Cboth
}
case 194:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1265
//line go.y:1326
{
yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
yyVAL.node.Etype = Csend
}
case 195:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1270
//line go.y:1331
{
yyVAL.node = Nod(OTMAP, yyDollar[3].node, yyDollar[5].node)
}
case 198:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1278
//line go.y:1339
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 199:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1284
//line go.y:1345
{
yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
yyVAL.node.Etype = Crecv
}
case 200:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1291
//line go.y:1352
{
yyVAL.node = Nod(OTSTRUCT, nil, nil)
yyVAL.node.List = yyDollar[3].list
......@@ -2462,14 +2494,14 @@ yydefault:
}
case 201:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1297
//line go.y:1358
{
yyVAL.node = Nod(OTSTRUCT, nil, nil)
fixlbrace(yyDollar[2].i)
}
case 202:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1304
//line go.y:1365
{
yyVAL.node = Nod(OTINTER, nil, nil)
yyVAL.node.List = yyDollar[3].list
......@@ -2477,14 +2509,14 @@ yydefault:
}
case 203:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1310
//line go.y:1371
{
yyVAL.node = Nod(OTINTER, nil, nil)
fixlbrace(yyDollar[2].i)
}
case 204:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1321
//line go.y:1382
{
yyVAL.node = yyDollar[2].node
if yyVAL.node == nil {
......@@ -2502,7 +2534,7 @@ yydefault:
}
case 205:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1339
//line go.y:1400
{
var t *Node
......@@ -2535,7 +2567,7 @@ yydefault:
}
case 206:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1370
//line go.y:1431
{
var rcvr, t *Node
......@@ -2573,7 +2605,7 @@ yydefault:
}
case 207:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1408
//line go.y:1469
{
var s *Sym
var t *Type
......@@ -2600,7 +2632,7 @@ yydefault:
}
case 208:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1433
//line go.y:1494
{
yyVAL.node = methodname1(newname(yyDollar[4].sym), yyDollar[2].list.N.Right)
yyVAL.node.Type = functype(yyDollar[2].list.N, yyDollar[6].list, yyDollar[8].list)
......@@ -2618,7 +2650,7 @@ yydefault:
}
case 209:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1451
//line go.y:1512
{
yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
yyVAL.node = Nod(OTFUNC, nil, nil)
......@@ -2627,13 +2659,13 @@ yydefault:
}
case 210:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1459
//line go.y:1520
{
yyVAL.list = nil
}
case 211:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1463
//line go.y:1524
{
yyVAL.list = yyDollar[2].list
if yyVAL.list == nil {
......@@ -2642,51 +2674,51 @@ yydefault:
}
case 212:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1472
//line go.y:1533
{
yyVAL.list = nil
}
case 213:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1476
//line go.y:1537
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node))
}
case 214:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1480
//line go.y:1541
{
yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
yyVAL.list = yyDollar[2].list
}
case 215:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1487
//line go.y:1548
{
closurehdr(yyDollar[1].node)
}
case 216:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1493
//line go.y:1554
{
yyVAL.node = closurebody(yyDollar[3].list)
fixlbrace(yyDollar[2].i)
}
case 217:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1498
//line go.y:1559
{
yyVAL.node = closurebody(nil)
}
case 218:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1509
//line go.y:1570
{
yyVAL.list = nil
}
case 219:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1513
//line go.y:1574
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
if nsyntaxerrors == 0 {
......@@ -2699,49 +2731,49 @@ yydefault:
}
case 221:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1527
//line go.y:1588
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 223:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1534
//line go.y:1595
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 224:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1540
//line go.y:1601
{
yyVAL.list = list1(yyDollar[1].node)
}
case 225:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1544
//line go.y:1605
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 227:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1551
//line go.y:1612
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 228:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1557
//line go.y:1618
{
yyVAL.list = list1(yyDollar[1].node)
}
case 229:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1561
//line go.y:1622
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 230:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1567
//line go.y:1628
{
var l *NodeList
......@@ -2767,14 +2799,14 @@ yydefault:
}
case 231:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1591
//line go.y:1652
{
yyDollar[1].node.Val = yyDollar[2].val
yyVAL.list = list1(yyDollar[1].node)
}
case 232:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1596
//line go.y:1657
{
yyDollar[2].node.Val = yyDollar[4].val
yyVAL.list = list1(yyDollar[2].node)
......@@ -2782,7 +2814,7 @@ yydefault:
}
case 233:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1602
//line go.y:1663
{
yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil)
yyDollar[2].node.Val = yyDollar[3].val
......@@ -2790,7 +2822,7 @@ yydefault:
}
case 234:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1608
//line go.y:1669
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.Val = yyDollar[5].val
......@@ -2799,7 +2831,7 @@ yydefault:
}
case 235:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1615
//line go.y:1676
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.Val = yyDollar[5].val
......@@ -2808,7 +2840,7 @@ yydefault:
}
case 236:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1624
//line go.y:1685
{
var n *Node
......@@ -2820,7 +2852,7 @@ yydefault:
}
case 237:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1634
//line go.y:1695
{
var pkg *Pkg
......@@ -2835,33 +2867,33 @@ yydefault:
}
case 238:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1649
//line go.y:1710
{
yyVAL.node = embedded(yyDollar[1].sym, localpkg)
}
case 239:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1655
//line go.y:1716
{
yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node)
ifacedcl(yyVAL.node)
}
case 240:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1660
//line go.y:1721
{
yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym))
}
case 241:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1664
//line go.y:1725
{
yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[2].sym))
Yyerror("cannot parenthesize embedded type")
}
case 242:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1671
//line go.y:1732
{
// without func keyword
yyDollar[2].list = checkarglist(yyDollar[2].list, 1)
......@@ -2871,7 +2903,7 @@ yydefault:
}
case 244:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1685
//line go.y:1746
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
......@@ -2879,7 +2911,7 @@ yydefault:
}
case 245:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1691
//line go.y:1752
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
......@@ -2887,56 +2919,56 @@ yydefault:
}
case 247:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1700
//line go.y:1761
{
yyVAL.list = list1(yyDollar[1].node)
}
case 248:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1704
//line go.y:1765
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 249:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1709
//line go.y:1770
{
yyVAL.list = nil
}
case 250:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1713
//line go.y:1774
{
yyVAL.list = yyDollar[1].list
}
case 251:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1721
//line go.y:1782
{
yyVAL.node = nil
}
case 253:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1726
//line go.y:1787
{
yyVAL.node = liststmt(yyDollar[1].list)
}
case 255:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1731
//line go.y:1792
{
yyVAL.node = nil
}
case 261:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1742
//line go.y:1803
{
yyDollar[1].node = Nod(OLABEL, yyDollar[1].node, nil)
yyDollar[1].node.Sym = dclstack // context, for goto restrictions
}
case 262:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1747
//line go.y:1808
{
var l *NodeList
......@@ -2949,7 +2981,7 @@ yydefault:
}
case 263:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1758
//line go.y:1819
{
// will be converted to OFALL
yyVAL.node = Nod(OXFALL, nil, nil)
......@@ -2957,38 +2989,38 @@ yydefault:
}
case 264:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1764
//line go.y:1825
{
yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil)
}
case 265:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1768
//line go.y:1829
{
yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil)
}
case 266:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1772
//line go.y:1833
{
yyVAL.node = Nod(OPROC, yyDollar[2].node, nil)
}
case 267:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1776
//line go.y:1837
{
yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil)
}
case 268:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1780
//line go.y:1841
{
yyVAL.node = Nod(OGOTO, yyDollar[2].node, nil)
yyVAL.node.Sym = dclstack // context, for goto restrictions
}
case 269:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1785
//line go.y:1846
{
yyVAL.node = Nod(ORETURN, nil, nil)
yyVAL.node.List = yyDollar[2].list
......@@ -3010,7 +3042,7 @@ yydefault:
}
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1807
//line go.y:1868
{
yyVAL.list = nil
if yyDollar[1].node != nil {
......@@ -3019,7 +3051,7 @@ yydefault:
}
case 271:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1814
//line go.y:1875
{
yyVAL.list = yyDollar[1].list
if yyDollar[3].node != nil {
......@@ -3028,163 +3060,163 @@ yydefault:
}
case 272:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1823
//line go.y:1884
{
yyVAL.list = list1(yyDollar[1].node)
}
case 273:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1827
//line go.y:1888
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 274:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1833
//line go.y:1894
{
yyVAL.list = list1(yyDollar[1].node)
}
case 275:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1837
//line go.y:1898
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 276:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1843
//line go.y:1904
{
yyVAL.list = list1(yyDollar[1].node)
}
case 277:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1847
//line go.y:1908
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 278:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1853
//line go.y:1914
{
yyVAL.list = list1(yyDollar[1].node)
}
case 279:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1857
//line go.y:1918
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 280:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1866
//line go.y:1927
{
yyVAL.list = list1(yyDollar[1].node)
}
case 281:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1870
//line go.y:1931
{
yyVAL.list = list1(yyDollar[1].node)
}
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1874
//line go.y:1935
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 283:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1878
//line go.y:1939
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 284:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1883
//line go.y:1944
{
yyVAL.list = nil
}
case 285:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1887
//line go.y:1948
{
yyVAL.list = yyDollar[1].list
}
case 290:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1901
//line go.y:1962
{
yyVAL.node = nil
}
case 292:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1907
//line go.y:1968
{
yyVAL.list = nil
}
case 294:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1913
//line go.y:1974
{
yyVAL.node = nil
}
case 296:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1919
//line go.y:1980
{
yyVAL.list = nil
}
case 298:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1925
//line go.y:1986
{
yyVAL.list = nil
}
case 300:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1931
//line go.y:1992
{
yyVAL.list = nil
}
case 302:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1937
//line go.y:1998
{
yyVAL.val.Ctype = CTxxx
}
case 304:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1947
//line go.y:2008
{
importimport(yyDollar[2].sym, yyDollar[3].val.U.(string))
}
case 305:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1951
//line go.y:2012
{
importvar(yyDollar[2].sym, yyDollar[3].typ)
}
case 306:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1955
//line go.y:2016
{
importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node)
}
case 307:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:1959
//line go.y:2020
{
importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node)
}
case 308:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1963
//line go.y:2024
{
importtype(yyDollar[2].typ, yyDollar[3].typ)
}
case 309:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1967
//line go.y:2028
{
if yyDollar[2].node == nil {
dclcontext = PEXTERN // since we skip the funcbody below
......@@ -3205,27 +3237,27 @@ yydefault:
}
case 310:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1988
//line go.y:2049
{
yyVAL.sym = yyDollar[1].sym
structpkg = yyVAL.sym.Pkg
}
case 311:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1995
//line go.y:2056
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
importsym(yyDollar[1].sym, OTYPE)
}
case 317:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2015
//line go.y:2076
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
}
case 318:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2019
//line go.y:2080
{
// predefined name like uint8
yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
......@@ -3238,43 +3270,43 @@ yydefault:
}
case 319:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2030
//line go.y:2091
{
yyVAL.typ = aindex(nil, yyDollar[3].typ)
}
case 320:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2034
//line go.y:2095
{
yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ)
}
case 321:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2038
//line go.y:2099
{
yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ)
}
case 322:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2042
//line go.y:2103
{
yyVAL.typ = tostruct(yyDollar[3].list)
}
case 323:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2046
//line go.y:2107
{
yyVAL.typ = tointerface(yyDollar[3].list)
}
case 324:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2050
//line go.y:2111
{
yyVAL.typ = Ptrto(yyDollar[2].typ)
}
case 325:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2054
//line go.y:2115
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[2].typ
......@@ -3282,7 +3314,7 @@ yydefault:
}
case 326:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2060
//line go.y:2121
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
......@@ -3290,7 +3322,7 @@ yydefault:
}
case 327:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2066
//line go.y:2127
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
......@@ -3298,7 +3330,7 @@ yydefault:
}
case 328:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2074
//line go.y:2135
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
......@@ -3306,13 +3338,13 @@ yydefault:
}
case 329:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2082
//line go.y:2143
{
yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list)
}
case 330:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2088
//line go.y:2149
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ))
if yyDollar[1].sym != nil {
......@@ -3322,7 +3354,7 @@ yydefault:
}
case 331:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2096
//line go.y:2157
{
var t *Type
......@@ -3339,7 +3371,7 @@ yydefault:
}
case 332:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2113
//line go.y:2174
{
var s *Sym
var p *Pkg
......@@ -3363,43 +3395,43 @@ yydefault:
}
case 333:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2137
//line go.y:2198
{
yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(functype(fakethis(), yyDollar[3].list, yyDollar[5].list)))
}
case 334:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2141
//line go.y:2202
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))
}
case 335:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2146
//line go.y:2207
{
yyVAL.list = nil
}
case 337:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2153
//line go.y:2214
{
yyVAL.list = yyDollar[2].list
}
case 338:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2157
//line go.y:2218
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)))
}
case 339:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2167
//line go.y:2228
{
yyVAL.node = nodlit(yyDollar[1].val)
}
case 340:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2171
//line go.y:2232
{
yyVAL.node = nodlit(yyDollar[2].val)
switch yyVAL.node.Val.Ctype {
......@@ -3419,7 +3451,7 @@ yydefault:
}
case 341:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2189
//line go.y:2250
{
yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg))
if yyVAL.node.Op != OLITERAL {
......@@ -3428,7 +3460,7 @@ yydefault:
}
case 343:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2199
//line go.y:2260
{
if yyDollar[2].node.Val.Ctype == CTRUNE && yyDollar[4].node.Val.Ctype == CTINT {
yyVAL.node = yyDollar[2].node
......@@ -3441,37 +3473,37 @@ yydefault:
}
case 346:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2215
//line go.y:2276
{
yyVAL.list = list1(yyDollar[1].node)
}
case 347:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2219
//line go.y:2280
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 348:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2225
//line go.y:2286
{
yyVAL.list = list1(yyDollar[1].node)
}
case 349:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2229
//line go.y:2290
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 350:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2235
//line go.y:2296
{
yyVAL.list = list1(yyDollar[1].node)
}
case 351:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2239
//line go.y:2300
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
......
......@@ -3,7 +3,7 @@ state 0
$accept: .file $end
$$4: . (4)
. reduce 4 (src line 149)
. reduce 4 (src line 210)
file goto 1
loadsys goto 2
......@@ -21,7 +21,7 @@ state 2
package: . (2)
LPACKAGE shift 5
. reduce 2 (src line 132)
. reduce 2 (src line 193)
package goto 4
......@@ -37,7 +37,7 @@ state 4
file: loadsys package.imports xdcl_list
imports: . (6)
. reduce 6 (src line 166)
. reduce 6 (src line 227)
imports goto 8
......@@ -56,7 +56,7 @@ state 6
loadsys: $$4 import_package.import_there
$$21: . (21)
. reduce 21 (src line 273)
. reduce 21 (src line 334)
import_there goto 14
$$21 goto 15
......@@ -74,7 +74,7 @@ state 8
xdcl_list: . (218)
LIMPORT shift 19
. reduce 218 (src line 1508)
. reduce 218 (src line 1569)
xdcl_list goto 17
import goto 18
......@@ -89,19 +89,19 @@ state 9
state 10
sym: LNAME. (157)
. reduce 157 (src line 1114)
. reduce 157 (src line 1175)
state 11
sym: hidden_importsym. (158)
. reduce 158 (src line 1123)
. reduce 158 (src line 1184)
state 12
sym: '?'. (159)
. reduce 159 (src line 1124)
. reduce 159 (src line 1185)
state 13
......@@ -115,14 +115,14 @@ state 13
state 14
loadsys: $$4 import_package import_there. (5)
. reduce 5 (src line 160)
. reduce 5 (src line 221)
state 15
import_there: $$21.hidden_import_list '$' '$'
hidden_import_list: . (344)
. reduce 344 (src line 2210)
. reduce 344 (src line 2271)
hidden_import_list goto 22
......@@ -131,7 +131,7 @@ state 16
import_safety: . (19)
LNAME shift 24
. reduce 19 (src line 265)
. reduce 19 (src line 326)
import_safety goto 23
......@@ -140,7 +140,7 @@ state 17
xdcl_list: xdcl_list.xdcl ';'
xdcl: . (23)
$end reduce 1 (src line 123)
$end reduce 1 (src line 184)
error shift 29
LLITERAL shift 68
LBREAK shift 41
......@@ -170,7 +170,7 @@ state 17
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 23 (src line 286)
';' reduce 23 (src line 347)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -236,7 +236,7 @@ state 19
state 20
package: LPACKAGE sym ';'. (3)
. reduce 3 (src line 139)
. reduce 3 (src line 200)
state 21
......@@ -271,7 +271,7 @@ state 23
state 24
import_safety: LNAME. (20)
. reduce 20 (src line 266)
. reduce 20 (src line 327)
state 25
......@@ -284,25 +284,25 @@ state 25
state 26
xdcl: common_dcl. (24)
. reduce 24 (src line 291)
. reduce 24 (src line 352)
state 27
xdcl: xfndcl. (25)
. reduce 25 (src line 292)
. reduce 25 (src line 353)
state 28
xdcl: non_dcl_stmt. (26)
. reduce 26 (src line 296)
. reduce 26 (src line 357)
state 29
xdcl: error. (27)
. reduce 27 (src line 301)
. reduce 27 (src line 362)
state 30
......@@ -373,31 +373,31 @@ state 33
state 34
non_dcl_stmt: simple_stmt. (256)
. reduce 256 (src line 1735)
. reduce 256 (src line 1796)
state 35
non_dcl_stmt: for_stmt. (257)
. reduce 257 (src line 1737)
. reduce 257 (src line 1798)
state 36
non_dcl_stmt: switch_stmt. (258)
. reduce 258 (src line 1738)
. reduce 258 (src line 1799)
state 37
non_dcl_stmt: select_stmt. (259)
. reduce 259 (src line 1739)
. reduce 259 (src line 1800)
state 38
non_dcl_stmt: if_stmt. (260)
. reduce 260 (src line 1740)
. reduce 260 (src line 1801)
state 39
......@@ -410,7 +410,7 @@ state 39
state 40
non_dcl_stmt: LFALL. (263)
. reduce 263 (src line 1757)
. reduce 263 (src line 1818)
state 41
......@@ -420,7 +420,7 @@ state 41
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 155 (src line 1108)
. reduce 155 (src line 1169)
sym goto 119
new_name goto 118
......@@ -434,7 +434,7 @@ state 42
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 155 (src line 1108)
. reduce 155 (src line 1169)
sym goto 119
new_name goto 118
......@@ -538,7 +538,7 @@ state 46
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 292 (src line 1906)
. reduce 292 (src line 1967)
sym goto 123
expr goto 129
......@@ -562,7 +562,7 @@ state 46
state 47
lconst: LCONST. (38)
. reduce 38 (src line 355)
. reduce 38 (src line 416)
state 48
......@@ -593,7 +593,7 @@ state 48
expr_list: expr. (276)
LASOP shift 130
LCOLAS reduce 276 (src line 1841)
LCOLAS reduce 276 (src line 1902)
LANDAND shift 134
LANDNOT shift 149
LCOMM shift 152
......@@ -616,9 +616,9 @@ state 48
'/' shift 146
'%' shift 147
'&' shift 148
'=' reduce 276 (src line 1841)
',' reduce 276 (src line 1841)
. reduce 49 (src line 411)
'=' reduce 276 (src line 1902)
',' reduce 276 (src line 1902)
. reduce 49 (src line 472)
state 49
......@@ -636,7 +636,7 @@ state 50
for_stmt: LFOR.$$74 for_body
$$74: . (74)
. reduce 74 (src line 660)
. reduce 74 (src line 721)
$$74 goto 156
......@@ -644,7 +644,7 @@ state 51
switch_stmt: LSWITCH.$$88 if_header $$89 LBODY caseblock_list '}'
$$88: . (88)
. reduce 88 (src line 755)
. reduce 88 (src line 816)
$$88 goto 157
......@@ -652,7 +652,7 @@ state 52
select_stmt: LSELECT.$$91 LBODY caseblock_list '}'
$$91: . (91)
. reduce 91 (src line 778)
. reduce 91 (src line 839)
$$91 goto 158
......@@ -660,28 +660,28 @@ state 53
if_stmt: LIF.$$78 if_header $$79 loop_body $$80 elseif_list else
$$78: . (78)
. reduce 78 (src line 689)
. reduce 78 (src line 750)
$$78 goto 159
state 54
labelname: new_name. (163)
. reduce 163 (src line 1168)
. reduce 163 (src line 1229)
state 55
expr: uexpr. (93)
. reduce 93 (src line 794)
. reduce 93 (src line 855)
state 56
new_name: sym. (153)
name: sym. (162)
':' reduce 153 (src line 1092)
. reduce 162 (src line 1159)
':' reduce 153 (src line 1153)
. reduce 162 (src line 1220)
state 57
......@@ -699,7 +699,7 @@ state 57
'(' shift 160
'.' shift 161
'[' shift 162
. reduce 114 (src line 878)
. reduce 114 (src line 939)
state 58
......@@ -1027,7 +1027,7 @@ state 66
pexpr: pexpr_no_paren. (146)
'{' shift 171
. reduce 146 (src line 1055)
. reduce 146 (src line 1116)
state 67
......@@ -1078,19 +1078,19 @@ state 67
state 68
pexpr_no_paren: LLITERAL. (126)
. reduce 126 (src line 942)
. reduce 126 (src line 1003)
state 69
pexpr_no_paren: name. (127)
. reduce 127 (src line 947)
. reduce 127 (src line 1008)
state 70
pexpr_no_paren: pseudocall. (134)
. reduce 134 (src line 985)
. reduce 134 (src line 1046)
state 71
......@@ -1112,23 +1112,23 @@ state 72
state 73
pexpr_no_paren: fnliteral. (139)
. reduce 139 (src line 1012)
. reduce 139 (src line 1073)
state 74
convtype: fntype. (181)
fnlitdcl: fntype. (215)
'(' reduce 181 (src line 1221)
. reduce 215 (src line 1485)
'(' reduce 181 (src line 1282)
. reduce 215 (src line 1546)
state 75
convtype: othertype. (182)
comptype: othertype. (183)
'(' reduce 182 (src line 1223)
. reduce 183 (src line 1225)
'(' reduce 182 (src line 1284)
. reduce 183 (src line 1286)
state 76
......@@ -1167,7 +1167,7 @@ state 77
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 290 (src line 1900)
. reduce 290 (src line 1961)
sym goto 123
expr goto 188
......@@ -1226,13 +1226,13 @@ state 79
state 80
othertype: structtype. (196)
. reduce 196 (src line 1273)
. reduce 196 (src line 1334)
state 81
othertype: interfacetype. (197)
. reduce 197 (src line 1274)
. reduce 197 (src line 1335)
state 82
......@@ -1258,13 +1258,13 @@ state 83
state 84
imports: imports import ';'. (7)
. reduce 7 (src line 167)
. reduce 7 (src line 228)
state 85
import: LIMPORT import_stmt. (8)
. reduce 8 (src line 169)
. reduce 8 (src line 230)
state 86
......@@ -1291,7 +1291,7 @@ state 87
$$21: . (21)
LPACKAGE shift 7
. reduce 21 (src line 273)
. reduce 21 (src line 334)
import_package goto 204
import_there goto 205
......@@ -1300,7 +1300,7 @@ state 87
state 88
import_here: LLITERAL. (15)
. reduce 15 (src line 225)
. reduce 15 (src line 286)
state 89
......@@ -1336,7 +1336,7 @@ state 92
state 93
hidden_import_list: hidden_import_list hidden_import. (345)
. reduce 345 (src line 2211)
. reduce 345 (src line 2272)
state 94
......@@ -1389,19 +1389,19 @@ state 98
state 99
import_package: LPACKAGE LNAME import_safety ';'. (18)
. reduce 18 (src line 248)
. reduce 18 (src line 309)
state 100
xdcl_list: xdcl_list xdcl ';'. (219)
. reduce 219 (src line 1512)
. reduce 219 (src line 1573)
state 101
common_dcl: LVAR vardcl. (28)
. reduce 28 (src line 306)
. reduce 28 (src line 367)
state 102
......@@ -1458,19 +1458,19 @@ state 103
state 104
dcl_name_list: dcl_name. (274)
. reduce 274 (src line 1831)
. reduce 274 (src line 1892)
state 105
dcl_name: sym. (154)
. reduce 154 (src line 1102)
. reduce 154 (src line 1163)
state 106
common_dcl: lconst constdcl. (31)
. reduce 31 (src line 319)
. reduce 31 (src line 380)
state 107
......@@ -1526,7 +1526,7 @@ state 108
state 109
common_dcl: LTYPE typedcl. (35)
. reduce 35 (src line 342)
. reduce 35 (src line 403)
state 110
......@@ -1577,7 +1577,7 @@ state 111
state 112
typedclname: sym. (47)
. reduce 47 (src line 396)
. reduce 47 (src line 457)
state 113
......@@ -1585,7 +1585,7 @@ state 113
fnbody: . (210)
'{' shift 242
. reduce 210 (src line 1458)
. reduce 210 (src line 1519)
fnbody goto 241
......@@ -1607,7 +1607,7 @@ state 114
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -1637,43 +1637,43 @@ state 116
non_dcl_stmt: labelname ':'.$$261 stmt
$$261: . (261)
. reduce 261 (src line 1741)
. reduce 261 (src line 1802)
$$261 goto 252
state 117
non_dcl_stmt: LBREAK onew_name. (264)
. reduce 264 (src line 1763)
. reduce 264 (src line 1824)
state 118
onew_name: new_name. (156)
. reduce 156 (src line 1112)
. reduce 156 (src line 1173)
state 119
new_name: sym. (153)
. reduce 153 (src line 1092)
. reduce 153 (src line 1153)
state 120
non_dcl_stmt: LCONTINUE onew_name. (265)
. reduce 265 (src line 1767)
. reduce 265 (src line 1828)
state 121
pexpr_no_paren: pseudocall. (134)
non_dcl_stmt: LGO pseudocall. (266)
'(' reduce 134 (src line 985)
'.' reduce 134 (src line 985)
'{' reduce 134 (src line 985)
'[' reduce 134 (src line 985)
. reduce 266 (src line 1771)
'(' reduce 134 (src line 1046)
'.' reduce 134 (src line 1046)
'{' reduce 134 (src line 1046)
'[' reduce 134 (src line 1046)
. reduce 266 (src line 1832)
state 122
......@@ -1696,7 +1696,7 @@ state 122
state 123
name: sym. (162)
. reduce 162 (src line 1159)
. reduce 162 (src line 1220)
state 124
......@@ -1710,23 +1710,23 @@ state 125
pexpr_no_paren: pseudocall. (134)
non_dcl_stmt: LDEFER pseudocall. (267)
'(' reduce 134 (src line 985)
'.' reduce 134 (src line 985)
'{' reduce 134 (src line 985)
'[' reduce 134 (src line 985)
. reduce 267 (src line 1775)
'(' reduce 134 (src line 1046)
'.' reduce 134 (src line 1046)
'{' reduce 134 (src line 1046)
'[' reduce 134 (src line 1046)
. reduce 267 (src line 1836)
state 126
non_dcl_stmt: LGOTO new_name. (268)
. reduce 268 (src line 1779)
. reduce 268 (src line 1840)
state 127
non_dcl_stmt: LRETURN oexpr_list. (269)
. reduce 269 (src line 1784)
. reduce 269 (src line 1845)
state 128
......@@ -1734,7 +1734,7 @@ state 128
oexpr_list: expr_list. (293)
',' shift 155
. reduce 293 (src line 1910)
. reduce 293 (src line 1971)
state 129
......@@ -1780,7 +1780,7 @@ state 129
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 276 (src line 1841)
. reduce 276 (src line 1902)
state 130
......@@ -1827,13 +1827,13 @@ state 130
state 131
simple_stmt: expr LINC. (53)
. reduce 53 (src line 461)
. reduce 53 (src line 522)
state 132
simple_stmt: expr LDEC. (54)
. reduce 54 (src line 467)
. reduce 54 (src line 528)
state 133
......@@ -2805,7 +2805,7 @@ state 156
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -2853,7 +2853,7 @@ state 157
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -2906,7 +2906,7 @@ state 159
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -3016,7 +3016,7 @@ state 162
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 290 (src line 1900)
. reduce 290 (src line 1961)
sym goto 123
expr goto 294
......@@ -3039,56 +3039,56 @@ state 162
state 163
uexpr: '*' uexpr. (115)
. reduce 115 (src line 880)
. reduce 115 (src line 941)
state 164
uexpr: '&' uexpr. (116)
. reduce 116 (src line 884)
. reduce 116 (src line 945)
state 165
uexpr: '+' uexpr. (117)
. reduce 117 (src line 895)
. reduce 117 (src line 956)
state 166
uexpr: '-' uexpr. (118)
. reduce 118 (src line 899)
. reduce 118 (src line 960)
state 167
uexpr: '!' uexpr. (119)
. reduce 119 (src line 903)
. reduce 119 (src line 964)
state 168
uexpr: '~' uexpr. (120)
. reduce 120 (src line 907)
. reduce 120 (src line 968)
state 169
uexpr: '^' uexpr. (121)
. reduce 121 (src line 912)
. reduce 121 (src line 973)
state 170
uexpr: LCOMM uexpr. (122)
. reduce 122 (src line 916)
. reduce 122 (src line 977)
state 171
pexpr_no_paren: pexpr_no_paren '{'.start_complit braced_keyval_list '}'
start_complit: . (140)
. reduce 140 (src line 1014)
. reduce 140 (src line 1075)
start_complit goto 296
......@@ -3143,19 +3143,19 @@ state 173
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 148 (src line 1070)
. reduce 148 (src line 1131)
state 174
expr_or_type: non_expr_type. (149)
. reduce 149 (src line 1072)
. reduce 149 (src line 1133)
state 175
non_expr_type: recvchantype. (172)
. reduce 172 (src line 1202)
. reduce 172 (src line 1263)
state 176
......@@ -3163,11 +3163,11 @@ state 176
convtype: fntype. (181)
fnlitdcl: fntype. (215)
error reduce 215 (src line 1485)
LBODY reduce 215 (src line 1485)
'(' reduce 181 (src line 1221)
'{' reduce 215 (src line 1485)
. reduce 173 (src line 1204)
error reduce 215 (src line 1546)
LBODY reduce 215 (src line 1546)
'(' reduce 181 (src line 1282)
'{' reduce 215 (src line 1546)
. reduce 173 (src line 1265)
state 177
......@@ -3175,10 +3175,10 @@ state 177
convtype: othertype. (182)
comptype: othertype. (183)
LBODY reduce 183 (src line 1225)
'(' reduce 182 (src line 1223)
'{' reduce 183 (src line 1225)
. reduce 174 (src line 1205)
LBODY reduce 183 (src line 1286)
'(' reduce 182 (src line 1284)
'{' reduce 183 (src line 1286)
. reduce 174 (src line 1266)
state 178
......@@ -3310,20 +3310,20 @@ state 181
pexpr_no_paren: comptype lbrace.start_complit braced_keyval_list '}'
start_complit: . (140)
. reduce 140 (src line 1014)
. reduce 140 (src line 1075)
start_complit goto 301
state 182
lbrace: LBODY. (151)
. reduce 151 (src line 1077)
. reduce 151 (src line 1138)
state 183
lbrace: '{'. (152)
. reduce 152 (src line 1082)
. reduce 152 (src line 1143)
state 184
......@@ -3359,9 +3359,9 @@ state 184
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -3403,7 +3403,7 @@ state 184
state 185
fnliteral: fnlitdcl error. (217)
. reduce 217 (src line 1497)
. reduce 217 (src line 1558)
state 186
......@@ -3463,13 +3463,13 @@ state 188
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 291 (src line 1904)
. reduce 291 (src line 1965)
state 189
othertype: LCHAN non_recvchantype. (193)
. reduce 193 (src line 1259)
. reduce 193 (src line 1320)
state 190
......@@ -3504,25 +3504,25 @@ state 190
state 191
non_recvchantype: fntype. (176)
. reduce 176 (src line 1211)
. reduce 176 (src line 1272)
state 192
non_recvchantype: othertype. (177)
. reduce 177 (src line 1213)
. reduce 177 (src line 1274)
state 193
non_recvchantype: ptrtype. (178)
. reduce 178 (src line 1214)
. reduce 178 (src line 1275)
state 194
non_recvchantype: dotname. (179)
. reduce 179 (src line 1215)
. reduce 179 (src line 1276)
state 195
......@@ -3588,7 +3588,7 @@ state 197
dotname: name.'.' sym
'.' shift 314
. reduce 189 (src line 1235)
. reduce 189 (src line 1296)
state 198
......@@ -3665,27 +3665,27 @@ state 201
osemi: . (286)
';' shift 333
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 332
state 202
import: LIMPORT '(' ')'. (10)
. reduce 10 (src line 172)
. reduce 10 (src line 233)
state 203
import_stmt_list: import_stmt. (13)
. reduce 13 (src line 221)
. reduce 13 (src line 282)
state 204
import_stmt: import_here import_package.import_there
$$21: . (21)
. reduce 21 (src line 273)
. reduce 21 (src line 334)
import_there goto 334
$$21 goto 15
......@@ -3693,37 +3693,37 @@ state 204
state 205
import_stmt: import_here import_there. (12)
. reduce 12 (src line 210)
. reduce 12 (src line 271)
state 206
import_here: sym LLITERAL. (16)
. reduce 16 (src line 233)
. reduce 16 (src line 294)
state 207
import_here: '.' LLITERAL. (17)
. reduce 17 (src line 240)
. reduce 17 (src line 301)
state 208
hidden_importsym: '@' LLITERAL '.' LNAME. (160)
. reduce 160 (src line 1129)
. reduce 160 (src line 1190)
state 209
hidden_importsym: '@' LLITERAL '.' '?'. (161)
. reduce 161 (src line 1144)
. reduce 161 (src line 1205)
state 210
import_there: $$21 hidden_import_list '$' '$'. (22)
. reduce 22 (src line 277)
. reduce 22 (src line 338)
state 211
......@@ -3757,7 +3757,7 @@ state 212
state 213
hidden_pkg_importsym: hidden_importsym. (310)
. reduce 310 (src line 1986)
. reduce 310 (src line 2047)
state 214
......@@ -3807,7 +3807,7 @@ state 215
state 216
hidden_pkgtype: hidden_pkg_importsym. (311)
. reduce 311 (src line 1993)
. reduce 311 (src line 2054)
state 217
......@@ -3815,7 +3815,7 @@ state 217
fnbody: . (210)
'{' shift 242
. reduce 210 (src line 1458)
. reduce 210 (src line 1519)
fnbody goto 353
......@@ -3845,20 +3845,20 @@ state 220
osemi: . (286)
';' shift 359
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 358
state 221
common_dcl: LVAR '(' ')'. (30)
. reduce 30 (src line 315)
. reduce 30 (src line 376)
state 222
vardcl_list: vardcl. (220)
. reduce 220 (src line 1524)
. reduce 220 (src line 1585)
state 223
......@@ -3866,7 +3866,7 @@ state 223
vardcl: dcl_name_list ntype.'=' expr_list
'=' shift 360
. reduce 39 (src line 361)
. reduce 39 (src line 422)
state 224
......@@ -3926,31 +3926,31 @@ state 225
state 226
ntype: recvchantype. (166)
. reduce 166 (src line 1191)
. reduce 166 (src line 1252)
state 227
ntype: fntype. (167)
. reduce 167 (src line 1193)
. reduce 167 (src line 1254)
state 228
ntype: othertype. (168)
. reduce 168 (src line 1194)
. reduce 168 (src line 1255)
state 229
ntype: ptrtype. (169)
. reduce 169 (src line 1195)
. reduce 169 (src line 1256)
state 230
ntype: dotname. (170)
. reduce 170 (src line 1196)
. reduce 170 (src line 1257)
state 231
......@@ -3995,14 +3995,14 @@ state 233
osemi: . (286)
';' shift 366
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 365
state 234
common_dcl: lconst '(' ')'. (34)
. reduce 34 (src line 337)
. reduce 34 (src line 398)
state 235
......@@ -4060,32 +4060,32 @@ state 237
osemi: . (286)
';' shift 370
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 369
state 238
common_dcl: LTYPE '(' ')'. (37)
. reduce 37 (src line 350)
. reduce 37 (src line 411)
state 239
typedcl_list: typedcl. (224)
. reduce 224 (src line 1538)
. reduce 224 (src line 1599)
state 240
typedcl: typedclname ntype. (48)
. reduce 48 (src line 405)
. reduce 48 (src line 466)
state 241
xfndcl: LFUNC fndcl fnbody. (204)
. reduce 204 (src line 1319)
. reduce 204 (src line 1380)
state 242
......@@ -4121,9 +4121,9 @@ state 242
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -4176,20 +4176,20 @@ state 244
ocomma: . (288)
',' shift 373
. reduce 288 (src line 1897)
. reduce 288 (src line 1958)
ocomma goto 374
state 245
arg_type_list: arg_type. (247)
. reduce 247 (src line 1698)
. reduce 247 (src line 1759)
state 246
arg_type: name_or_type. (243)
. reduce 243 (src line 1682)
. reduce 243 (src line 1743)
state 247
......@@ -4210,7 +4210,7 @@ state 247
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 162 (src line 1159)
. reduce 162 (src line 1220)
sym goto 123
ntype goto 249
......@@ -4229,13 +4229,13 @@ state 247
state 248
arg_type: dotdotdot. (246)
. reduce 246 (src line 1696)
. reduce 246 (src line 1757)
state 249
name_or_type: ntype. (150)
. reduce 150 (src line 1074)
. reduce 150 (src line 1135)
state 250
......@@ -4254,7 +4254,7 @@ state 250
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 164 (src line 1180)
. reduce 164 (src line 1241)
sym goto 123
ntype goto 377
......@@ -4285,7 +4285,7 @@ state 251
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -4311,11 +4311,11 @@ state 252
error shift 307
LLITERAL shift 68
LBREAK shift 41
LCASE reduce 251 (src line 1720)
LCASE reduce 251 (src line 1781)
LCHAN shift 78
LCONST shift 47
LCONTINUE shift 42
LDEFAULT reduce 251 (src line 1720)
LDEFAULT reduce 251 (src line 1781)
LDEFER shift 44
LFALL shift 40
LFOR shift 50
......@@ -4339,9 +4339,9 @@ state 252
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -4396,7 +4396,7 @@ state 253
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -4458,7 +4458,7 @@ state 254
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 50 (src line 426)
. reduce 50 (src line 487)
state 255
......@@ -4502,7 +4502,7 @@ state 255
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 94 (src line 796)
. reduce 94 (src line 857)
state 256
......@@ -4545,7 +4545,7 @@ state 256
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 95 (src line 800)
. reduce 95 (src line 861)
state 257
......@@ -4582,7 +4582,7 @@ state 257
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 96 (src line 804)
. reduce 96 (src line 865)
state 258
......@@ -4619,7 +4619,7 @@ state 258
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 97 (src line 808)
. reduce 97 (src line 869)
state 259
......@@ -4656,7 +4656,7 @@ state 259
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 98 (src line 812)
. reduce 98 (src line 873)
state 260
......@@ -4693,7 +4693,7 @@ state 260
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 99 (src line 816)
. reduce 99 (src line 877)
state 261
......@@ -4730,7 +4730,7 @@ state 261
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 100 (src line 820)
. reduce 100 (src line 881)
state 262
......@@ -4767,7 +4767,7 @@ state 262
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 101 (src line 824)
. reduce 101 (src line 885)
state 263
......@@ -4800,7 +4800,7 @@ state 263
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 102 (src line 828)
. reduce 102 (src line 889)
state 264
......@@ -4833,7 +4833,7 @@ state 264
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 103 (src line 832)
. reduce 103 (src line 893)
state 265
......@@ -4866,7 +4866,7 @@ state 265
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 104 (src line 836)
. reduce 104 (src line 897)
state 266
......@@ -4899,7 +4899,7 @@ state 266
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 105 (src line 840)
. reduce 105 (src line 901)
state 267
......@@ -4925,7 +4925,7 @@ state 267
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 106 (src line 844)
. reduce 106 (src line 905)
state 268
......@@ -4951,7 +4951,7 @@ state 268
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 107 (src line 848)
. reduce 107 (src line 909)
state 269
......@@ -4977,7 +4977,7 @@ state 269
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 108 (src line 852)
. reduce 108 (src line 913)
state 270
......@@ -5003,7 +5003,7 @@ state 270
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 109 (src line 856)
. reduce 109 (src line 917)
state 271
......@@ -5029,7 +5029,7 @@ state 271
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 110 (src line 860)
. reduce 110 (src line 921)
state 272
......@@ -5055,7 +5055,7 @@ state 272
expr: expr.LRSH expr
expr: expr.LCOMM expr
. reduce 111 (src line 864)
. reduce 111 (src line 925)
state 273
......@@ -5081,7 +5081,7 @@ state 273
expr: expr LRSH expr. (112)
expr: expr.LCOMM expr
. reduce 112 (src line 868)
. reduce 112 (src line 929)
state 274
......@@ -5126,7 +5126,7 @@ state 274
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 113 (src line 873)
. reduce 113 (src line 934)
state 275
......@@ -5134,7 +5134,7 @@ state 275
expr_list: expr_list.',' expr
',' shift 155
. reduce 51 (src line 431)
. reduce 51 (src line 492)
state 276
......@@ -5142,7 +5142,7 @@ state 276
expr_list: expr_list.',' expr
',' shift 155
. reduce 52 (src line 443)
. reduce 52 (src line 504)
state 277
......@@ -5188,13 +5188,13 @@ state 277
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 277 (src line 1846)
. reduce 277 (src line 1907)
state 278
for_stmt: LFOR $$74 for_body. (75)
. reduce 75 (src line 665)
. reduce 75 (src line 726)
state 279
......@@ -5210,19 +5210,19 @@ state 280
for_header: osimple_stmt. (71)
';' shift 383
. reduce 71 (src line 645)
. reduce 71 (src line 706)
state 281
for_header: range_stmt. (72)
. reduce 72 (src line 651)
. reduce 72 (src line 712)
state 282
osimple_stmt: simple_stmt. (295)
. reduce 295 (src line 1916)
. reduce 295 (src line 1977)
state 283
......@@ -5283,7 +5283,7 @@ state 285
switch_stmt: LSWITCH $$88 if_header.$$89 LBODY caseblock_list '}'
$$89: . (89)
. reduce 89 (src line 760)
. reduce 89 (src line 821)
$$89 goto 387
......@@ -5292,14 +5292,14 @@ state 286
if_header: osimple_stmt.';' osimple_stmt
';' shift 388
. reduce 76 (src line 671)
. reduce 76 (src line 732)
state 287
select_stmt: LSELECT $$91 LBODY.caseblock_list '}'
caseblock_list: . (63)
. reduce 63 (src line 591)
. reduce 63 (src line 652)
caseblock_list goto 389
......@@ -5307,14 +5307,14 @@ state 288
if_stmt: LIF $$78 if_header.$$79 loop_body $$80 elseif_list else
$$79: . (79)
. reduce 79 (src line 694)
. reduce 79 (src line 755)
$$79 goto 390
state 289
pseudocall: pexpr '(' ')'. (123)
. reduce 123 (src line 925)
. reduce 123 (src line 986)
state 290
......@@ -5325,20 +5325,20 @@ state 290
LDDD shift 392
',' shift 393
. reduce 288 (src line 1897)
. reduce 288 (src line 1958)
ocomma goto 391
state 291
expr_or_type_list: expr_or_type. (278)
. reduce 278 (src line 1851)
. reduce 278 (src line 1912)
state 292
pexpr_no_paren: pexpr '.' sym. (128)
. reduce 128 (src line 948)
. reduce 128 (src line 1009)
state 293
......@@ -5432,7 +5432,7 @@ state 294
'%' shift 147
'&' shift 148
']' shift 396
. reduce 291 (src line 1904)
. reduce 291 (src line 1965)
state 295
......@@ -5467,7 +5467,7 @@ state 296
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 284 (src line 1882)
. reduce 284 (src line 1943)
sym goto 123
expr goto 402
......@@ -5495,13 +5495,13 @@ state 297
pexpr: '(' expr_or_type ')'. (147)
'{' shift 404
. reduce 147 (src line 1057)
. reduce 147 (src line 1118)
state 298
non_expr_type: '*' non_expr_type. (175)
. reduce 175 (src line 1206)
. reduce 175 (src line 1267)
state 299
......@@ -5581,7 +5581,7 @@ state 300
'%' shift 147
'&' shift 148
',' shift 413
. reduce 288 (src line 1897)
. reduce 288 (src line 1958)
ocomma goto 412
......@@ -5609,7 +5609,7 @@ state 301
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 284 (src line 1882)
. reduce 284 (src line 1943)
sym goto 123
expr goto 402
......@@ -5644,38 +5644,38 @@ state 302
state 303
stmt_list: stmt. (270)
. reduce 270 (src line 1805)
. reduce 270 (src line 1866)
state 304
stmt: compound_stmt. (252)
. reduce 252 (src line 1724)
. reduce 252 (src line 1785)
state 305
stmt: common_dcl. (253)
. reduce 253 (src line 1725)
. reduce 253 (src line 1786)
state 306
stmt: non_dcl_stmt. (254)
. reduce 254 (src line 1729)
. reduce 254 (src line 1790)
state 307
stmt: error. (255)
. reduce 255 (src line 1730)
. reduce 255 (src line 1791)
state 308
compound_stmt: '{'.$$59 stmt_list '}'
$$59: . (59)
. reduce 59 (src line 545)
. reduce 59 (src line 606)
$$59 goto 417
......@@ -5740,7 +5740,7 @@ state 310
state 311
othertype: LCHAN LCOMM ntype. (194)
. reduce 194 (src line 1264)
. reduce 194 (src line 1325)
state 312
......@@ -5753,7 +5753,7 @@ state 312
state 313
ptrtype: '*' ntype. (198)
. reduce 198 (src line 1276)
. reduce 198 (src line 1337)
state 314
......@@ -5780,20 +5780,20 @@ state 316
osemi: . (286)
';' shift 424
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 423
state 317
structtype: LSTRUCT lbrace '}'. (201)
. reduce 201 (src line 1296)
. reduce 201 (src line 1357)
state 318
structdcl_list: structdcl. (226)
. reduce 226 (src line 1548)
. reduce 226 (src line 1609)
state 319
......@@ -5832,7 +5832,7 @@ state 320
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 427
......@@ -5861,13 +5861,13 @@ state 322
state 323
new_name_list: new_name. (272)
. reduce 272 (src line 1821)
. reduce 272 (src line 1882)
state 324
embed: packname. (238)
. reduce 238 (src line 1647)
. reduce 238 (src line 1708)
state 325
......@@ -5875,11 +5875,11 @@ state 325
packname: LNAME. (236)
packname: LNAME.'.' sym
LLITERAL reduce 236 (src line 1622)
';' reduce 236 (src line 1622)
LLITERAL reduce 236 (src line 1683)
';' reduce 236 (src line 1683)
'.' shift 434
'}' reduce 236 (src line 1622)
. reduce 157 (src line 1114)
'}' reduce 236 (src line 1683)
. reduce 157 (src line 1175)
state 326
......@@ -5888,20 +5888,20 @@ state 326
osemi: . (286)
';' shift 436
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 435
state 327
interfacetype: LINTERFACE lbrace '}'. (203)
. reduce 203 (src line 1309)
. reduce 203 (src line 1370)
state 328
interfacedcl_list: interfacedcl. (228)
. reduce 228 (src line 1555)
. reduce 228 (src line 1616)
state 329
......@@ -5915,7 +5915,7 @@ state 329
state 330
interfacedcl: packname. (240)
. reduce 240 (src line 1659)
. reduce 240 (src line 1720)
state 331
......@@ -5942,7 +5942,7 @@ state 333
'.' shift 90
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
import_here goto 87
sym goto 89
......@@ -5952,7 +5952,7 @@ state 333
state 334
import_stmt: import_here import_package import_there. (11)
. reduce 11 (src line 174)
. reduce 11 (src line 235)
state 335
......@@ -5972,31 +5972,31 @@ state 336
state 337
hidden_type: hidden_type_misc. (312)
. reduce 312 (src line 2004)
. reduce 312 (src line 2065)
state 338
hidden_type: hidden_type_recv_chan. (313)
. reduce 313 (src line 2006)
. reduce 313 (src line 2067)
state 339
hidden_type: hidden_type_func. (314)
. reduce 314 (src line 2007)
. reduce 314 (src line 2068)
state 340
hidden_type_misc: hidden_importsym. (317)
. reduce 317 (src line 2013)
. reduce 317 (src line 2074)
state 341
hidden_type_misc: LNAME. (318)
. reduce 318 (src line 2018)
. reduce 318 (src line 2079)
state 342
......@@ -6131,7 +6131,7 @@ state 354
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 296 (src line 1918)
. reduce 296 (src line 1979)
sym goto 357
hidden_importsym goto 11
......@@ -6151,7 +6151,7 @@ state 355
state 356
hidden_funarg_list: hidden_funarg. (346)
. reduce 346 (src line 2213)
. reduce 346 (src line 2274)
state 357
......@@ -6191,7 +6191,7 @@ state 359
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 105
dcl_name goto 104
......@@ -6246,13 +6246,13 @@ state 361
expr_list: expr_list.',' expr
',' shift 155
. reduce 41 (src line 370)
. reduce 41 (src line 431)
state 362
dcl_name_list: dcl_name_list ',' dcl_name. (275)
. reduce 275 (src line 1836)
. reduce 275 (src line 1897)
state 363
......@@ -6305,7 +6305,7 @@ state 366
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 105
dcl_name goto 104
......@@ -6362,7 +6362,7 @@ state 368
expr_list: expr_list.',' expr
',' shift 155
. reduce 43 (src line 380)
. reduce 43 (src line 441)
state 369
......@@ -6379,7 +6379,7 @@ state 370
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 112
typedclname goto 111
......@@ -6412,7 +6412,7 @@ state 372
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 212 (src line 1470)
. reduce 212 (src line 1531)
sym goto 485
dotname goto 493
......@@ -6444,7 +6444,7 @@ state 373
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 289 (src line 1898)
. reduce 289 (src line 1959)
sym goto 247
ntype goto 249
......@@ -6464,25 +6464,25 @@ state 373
state 374
oarg_type_list_ocomma: arg_type_list ocomma. (250)
. reduce 250 (src line 1712)
. reduce 250 (src line 1773)
state 375
arg_type: sym name_or_type. (244)
. reduce 244 (src line 1684)
. reduce 244 (src line 1745)
state 376
arg_type: sym dotdotdot. (245)
. reduce 245 (src line 1690)
. reduce 245 (src line 1751)
state 377
dotdotdot: LDDD ntype. (165)
. reduce 165 (src line 1186)
. reduce 165 (src line 1247)
state 378
......@@ -6495,7 +6495,7 @@ state 378
state 379
non_dcl_stmt: labelname ':' $$261 stmt. (262)
. reduce 262 (src line 1746)
. reduce 262 (src line 1807)
state 380
......@@ -6508,14 +6508,14 @@ state 380
state 381
for_body: for_header loop_body. (73)
. reduce 73 (src line 653)
. reduce 73 (src line 714)
state 382
loop_body: LBODY.$$65 stmt_list '}'
$$65: . (65)
. reduce 65 (src line 600)
. reduce 65 (src line 661)
$$65 goto 497
......@@ -6542,7 +6542,7 @@ state 383
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -6695,7 +6695,7 @@ state 386
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 69 (src line 625)
. reduce 69 (src line 686)
state 387
......@@ -6728,7 +6728,7 @@ state 388
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -6782,7 +6782,7 @@ state 392
ocomma: . (288)
',' shift 413
. reduce 288 (src line 1897)
. reduce 288 (src line 1958)
ocomma goto 510
......@@ -6809,7 +6809,7 @@ state 393
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 289 (src line 1898)
. reduce 289 (src line 1959)
sym goto 123
expr goto 173
......@@ -6848,7 +6848,7 @@ state 395
state 396
pexpr_no_paren: pexpr '[' expr ']'. (131)
. reduce 131 (src line 967)
. reduce 131 (src line 1028)
state 397
......@@ -6875,7 +6875,7 @@ state 397
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 290 (src line 1900)
. reduce 290 (src line 1961)
sym goto 123
expr goto 188
......@@ -6909,20 +6909,20 @@ state 399
ocomma: . (288)
',' shift 516
. reduce 288 (src line 1897)
. reduce 288 (src line 1958)
ocomma goto 517
state 400
keyval_list: keyval. (280)
. reduce 280 (src line 1864)
. reduce 280 (src line 1925)
state 401
keyval_list: bare_complitexpr. (281)
. reduce 281 (src line 1869)
. reduce 281 (src line 1930)
state 402
......@@ -6970,14 +6970,14 @@ state 402
'%' shift 147
'&' shift 148
':' shift 518
. reduce 142 (src line 1027)
. reduce 142 (src line 1088)
state 403
bare_complitexpr: '{'.start_complit braced_keyval_list '}'
start_complit: . (140)
. reduce 140 (src line 1014)
. reduce 140 (src line 1075)
start_complit goto 519
......@@ -6985,7 +6985,7 @@ state 404
pexpr_no_paren: '(' expr_or_type ')' '{'.start_complit braced_keyval_list '}'
start_complit: . (140)
. reduce 140 (src line 1014)
. reduce 140 (src line 1075)
start_complit goto 520
......@@ -7022,47 +7022,47 @@ state 405
state 406
recvchantype: LCOMM LCHAN ntype. (199)
. reduce 199 (src line 1282)
. reduce 199 (src line 1343)
state 407
ntype: fntype. (167)
non_recvchantype: fntype. (176)
LBODY reduce 176 (src line 1211)
'(' reduce 176 (src line 1211)
'{' reduce 176 (src line 1211)
. reduce 167 (src line 1193)
LBODY reduce 176 (src line 1272)
'(' reduce 176 (src line 1272)
'{' reduce 176 (src line 1272)
. reduce 167 (src line 1254)
state 408
ntype: othertype. (168)
non_recvchantype: othertype. (177)
LBODY reduce 177 (src line 1213)
'(' reduce 177 (src line 1213)
'{' reduce 177 (src line 1213)
. reduce 168 (src line 1194)
LBODY reduce 177 (src line 1274)
'(' reduce 177 (src line 1274)
'{' reduce 177 (src line 1274)
. reduce 168 (src line 1255)
state 409
ntype: ptrtype. (169)
non_recvchantype: ptrtype. (178)
LBODY reduce 178 (src line 1214)
'(' reduce 178 (src line 1214)
'{' reduce 178 (src line 1214)
. reduce 169 (src line 1195)
LBODY reduce 178 (src line 1275)
'(' reduce 178 (src line 1275)
'{' reduce 178 (src line 1275)
. reduce 169 (src line 1256)
state 410
ntype: dotname. (170)
non_recvchantype: dotname. (179)
LBODY reduce 179 (src line 1215)
'(' reduce 179 (src line 1215)
'{' reduce 179 (src line 1215)
. reduce 170 (src line 1196)
LBODY reduce 179 (src line 1276)
'(' reduce 179 (src line 1276)
'{' reduce 179 (src line 1276)
. reduce 170 (src line 1257)
state 411
......@@ -7105,7 +7105,7 @@ state 412
state 413
ocomma: ','. (289)
. reduce 289 (src line 1898)
. reduce 289 (src line 1959)
state 414
......@@ -7118,7 +7118,7 @@ state 414
state 415
fnliteral: fnlitdcl lbrace stmt_list '}'. (216)
. reduce 216 (src line 1491)
. reduce 216 (src line 1552)
state 416
......@@ -7128,11 +7128,11 @@ state 416
error shift 307
LLITERAL shift 68
LBREAK shift 41
LCASE reduce 251 (src line 1720)
LCASE reduce 251 (src line 1781)
LCHAN shift 78
LCONST shift 47
LCONTINUE shift 42
LDEFAULT reduce 251 (src line 1720)
LDEFAULT reduce 251 (src line 1781)
LDEFER shift 44
LFALL shift 40
LFOR shift 50
......@@ -7156,9 +7156,9 @@ state 416
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -7229,9 +7229,9 @@ state 417
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -7273,25 +7273,25 @@ state 417
state 418
othertype: '[' oexpr ']' ntype. (191)
. reduce 191 (src line 1249)
. reduce 191 (src line 1310)
state 419
othertype: '[' LDDD ']' ntype. (192)
. reduce 192 (src line 1254)
. reduce 192 (src line 1315)
state 420
non_recvchantype: '(' ntype ')'. (180)
. reduce 180 (src line 1216)
. reduce 180 (src line 1277)
state 421
dotname: name '.' sym. (190)
. reduce 190 (src line 1237)
. reduce 190 (src line 1298)
state 422
......@@ -7339,7 +7339,7 @@ state 424
'(' shift 321
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 119
packname goto 324
......@@ -7354,7 +7354,7 @@ state 425
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 529
......@@ -7373,13 +7373,13 @@ state 426
state 427
structdcl: embed oliteral. (231)
. reduce 231 (src line 1590)
. reduce 231 (src line 1651)
state 428
oliteral: LLITERAL. (303)
. reduce 303 (src line 1940)
. reduce 303 (src line 2001)
state 429
......@@ -7403,7 +7403,7 @@ state 431
packname: LNAME.'.' sym
'.' shift 434
. reduce 236 (src line 1622)
. reduce 236 (src line 1683)
state 432
......@@ -7411,7 +7411,7 @@ state 432
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 533
......@@ -7450,7 +7450,7 @@ state 436
'(' shift 331
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 119
packname goto 330
......@@ -7461,7 +7461,7 @@ state 436
state 437
interfacedcl: new_name indcl. (239)
. reduce 239 (src line 1653)
. reduce 239 (src line 1714)
state 438
......@@ -7481,7 +7481,7 @@ state 438
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -7510,25 +7510,25 @@ state 439
state 440
import: LIMPORT '(' import_stmt_list osemi ')'. (9)
. reduce 9 (src line 171)
. reduce 9 (src line 232)
state 441
import_stmt_list: import_stmt_list ';' import_stmt. (14)
. reduce 14 (src line 223)
. reduce 14 (src line 284)
state 442
hidden_import: LIMPORT LNAME LLITERAL ';'. (304)
. reduce 304 (src line 1945)
. reduce 304 (src line 2006)
state 443
hidden_import: LVAR hidden_pkg_importsym hidden_type ';'. (305)
. reduce 305 (src line 1950)
. reduce 305 (src line 2011)
state 444
......@@ -7587,7 +7587,7 @@ state 447
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 298 (src line 1924)
. reduce 298 (src line 1985)
sym goto 546
hidden_importsym goto 11
......@@ -7610,7 +7610,7 @@ state 448
'[' shift 342
'?' shift 12
'@' shift 13
. reduce 300 (src line 1930)
. reduce 300 (src line 1991)
sym goto 550
hidden_importsym goto 553
......@@ -7625,13 +7625,13 @@ state 448
state 449
hidden_type_misc: '*' hidden_type. (324)
. reduce 324 (src line 2049)
. reduce 324 (src line 2110)
state 450
hidden_type_misc: LCHAN hidden_type_non_recv_chan. (325)
. reduce 325 (src line 2053)
. reduce 325 (src line 2114)
state 451
......@@ -7666,13 +7666,13 @@ state 452
state 453
hidden_type_non_recv_chan: hidden_type_misc. (315)
. reduce 315 (src line 2009)
. reduce 315 (src line 2070)
state 454
hidden_type_non_recv_chan: hidden_type_func. (316)
. reduce 316 (src line 2011)
. reduce 316 (src line 2072)
state 455
......@@ -7703,7 +7703,7 @@ state 456
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 296 (src line 1918)
. reduce 296 (src line 1979)
sym goto 357
hidden_importsym goto 11
......@@ -7721,7 +7721,7 @@ state 457
state 458
hidden_constant: hidden_literal. (342)
. reduce 342 (src line 2196)
. reduce 342 (src line 2257)
state 459
......@@ -7741,7 +7741,7 @@ state 459
state 460
hidden_literal: LLITERAL. (339)
. reduce 339 (src line 2165)
. reduce 339 (src line 2226)
state 461
......@@ -7754,7 +7754,7 @@ state 461
state 462
hidden_literal: sym. (341)
. reduce 341 (src line 2188)
. reduce 341 (src line 2249)
state 463
......@@ -7776,13 +7776,13 @@ state 463
state 464
hidden_import: LTYPE hidden_pkgtype hidden_type ';'. (308)
. reduce 308 (src line 1962)
. reduce 308 (src line 2023)
state 465
hidden_import: LFUNC hidden_fndcl fnbody ';'. (309)
. reduce 309 (src line 1966)
. reduce 309 (src line 2027)
state 466
......@@ -7797,7 +7797,7 @@ state 467
hidden_funarg_list: hidden_funarg_list.',' hidden_funarg
',' shift 469
. reduce 297 (src line 1922)
. reduce 297 (src line 1983)
state 468
......@@ -7828,7 +7828,7 @@ state 470
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 565
......@@ -7856,13 +7856,13 @@ state 471
state 472
common_dcl: LVAR '(' vardcl_list osemi ')'. (29)
. reduce 29 (src line 311)
. reduce 29 (src line 372)
state 473
vardcl_list: vardcl_list ';' vardcl. (221)
. reduce 221 (src line 1526)
. reduce 221 (src line 1587)
state 474
......@@ -7870,19 +7870,19 @@ state 474
expr_list: expr_list.',' expr
',' shift 155
. reduce 40 (src line 366)
. reduce 40 (src line 427)
state 475
ntype: '(' ntype ')'. (171)
. reduce 171 (src line 1197)
. reduce 171 (src line 1258)
state 476
common_dcl: lconst '(' constdcl osemi ')'. (32)
. reduce 32 (src line 325)
. reduce 32 (src line 386)
state 477
......@@ -7891,20 +7891,20 @@ state 477
osemi: . (286)
';' shift 568
. reduce 286 (src line 1894)
. reduce 286 (src line 1955)
osemi goto 567
state 478
constdcl_list: constdcl1. (222)
. reduce 222 (src line 1531)
. reduce 222 (src line 1592)
state 479
constdcl1: constdcl. (44)
. reduce 44 (src line 385)
. reduce 44 (src line 446)
state 480
......@@ -7928,7 +7928,7 @@ state 480
'?' shift 12
'@' shift 13
',' shift 225
. reduce 46 (src line 391)
. reduce 46 (src line 452)
sym goto 123
ntype goto 569
......@@ -7947,25 +7947,25 @@ state 481
expr_list: expr_list.',' expr
',' shift 155
. reduce 42 (src line 375)
. reduce 42 (src line 436)
state 482
common_dcl: LTYPE '(' typedcl_list osemi ')'. (36)
. reduce 36 (src line 346)
. reduce 36 (src line 407)
state 483
typedcl_list: typedcl_list ';' typedcl. (225)
. reduce 225 (src line 1543)
. reduce 225 (src line 1604)
state 484
fnbody: '{' stmt_list '}'. (211)
. reduce 211 (src line 1462)
. reduce 211 (src line 1523)
state 485
......@@ -7973,19 +7973,19 @@ state 485
fndcl: '(' oarg_type_list_ocomma ')' sym.'(' oarg_type_list_ocomma ')' fnres
'(' shift 570
. reduce 162 (src line 1159)
. reduce 162 (src line 1220)
state 486
fntype: LFUNC '(' oarg_type_list_ocomma ')' fnres. (209)
. reduce 209 (src line 1449)
. reduce 209 (src line 1510)
state 487
fnres: fnret_type. (213)
. reduce 213 (src line 1475)
. reduce 213 (src line 1536)
state 488
......@@ -8005,7 +8005,7 @@ state 488
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -8027,37 +8027,37 @@ state 488
state 489
fnret_type: recvchantype. (184)
. reduce 184 (src line 1228)
. reduce 184 (src line 1289)
state 490
fnret_type: fntype. (185)
. reduce 185 (src line 1230)
. reduce 185 (src line 1291)
state 491
fnret_type: othertype. (186)
. reduce 186 (src line 1231)
. reduce 186 (src line 1292)
state 492
fnret_type: ptrtype. (187)
. reduce 187 (src line 1232)
. reduce 187 (src line 1293)
state 493
fnret_type: dotname. (188)
. reduce 188 (src line 1233)
. reduce 188 (src line 1294)
state 494
arg_type_list: arg_type_list ',' arg_type. (248)
. reduce 248 (src line 1703)
. reduce 248 (src line 1764)
state 495
......@@ -8076,7 +8076,7 @@ state 495
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 212 (src line 1470)
. reduce 212 (src line 1531)
sym goto 123
dotname goto 493
......@@ -8107,7 +8107,7 @@ state 496
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 212 (src line 1470)
. reduce 212 (src line 1531)
sym goto 123
dotname goto 493
......@@ -8155,9 +8155,9 @@ state 497
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -8289,33 +8289,33 @@ state 501
switch_stmt: LSWITCH $$88 if_header $$89 LBODY.caseblock_list '}'
caseblock_list: . (63)
. reduce 63 (src line 591)
. reduce 63 (src line 652)
caseblock_list goto 577
state 502
if_header: osimple_stmt ';' osimple_stmt. (77)
. reduce 77 (src line 678)
. reduce 77 (src line 739)
state 503
caseblock_list: caseblock_list caseblock. (64)
. reduce 64 (src line 595)
. reduce 64 (src line 656)
state 504
select_stmt: LSELECT $$91 LBODY caseblock_list '}'. (92)
. reduce 92 (src line 783)
. reduce 92 (src line 844)
state 505
caseblock: case.$$61 stmt_list
$$61: . (61)
. reduce 61 (src line 560)
. reduce 61 (src line 621)
$$61 goto 578
......@@ -8377,14 +8377,14 @@ state 508
if_stmt: LIF $$78 if_header $$79 loop_body.$$80 elseif_list else
$$80: . (80)
. reduce 80 (src line 700)
. reduce 80 (src line 761)
$$80 goto 581
state 509
pseudocall: pexpr '(' expr_or_type_list ocomma ')'. (124)
. reduce 124 (src line 930)
. reduce 124 (src line 991)
state 510
......@@ -8397,19 +8397,19 @@ state 510
state 511
expr_or_type_list: expr_or_type_list ',' expr_or_type. (279)
. reduce 279 (src line 1856)
. reduce 279 (src line 1917)
state 512
pexpr_no_paren: pexpr '.' '(' expr_or_type ')'. (129)
. reduce 129 (src line 959)
. reduce 129 (src line 1020)
state 513
pexpr_no_paren: pexpr '.' '(' LTYPE ')'. (130)
. reduce 130 (src line 963)
. reduce 130 (src line 1024)
state 514
......@@ -8424,7 +8424,7 @@ state 514
state 515
pexpr_no_paren: pexpr_no_paren '{' start_complit braced_keyval_list '}'. (137)
. reduce 137 (src line 999)
. reduce 137 (src line 1060)
state 516
......@@ -8452,7 +8452,7 @@ state 516
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 289 (src line 1898)
. reduce 289 (src line 1959)
sym goto 123
expr goto 402
......@@ -8476,7 +8476,7 @@ state 516
state 517
braced_keyval_list: keyval_list ocomma. (285)
. reduce 285 (src line 1886)
. reduce 285 (src line 1947)
state 518
......@@ -8546,7 +8546,7 @@ state 519
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 284 (src line 1882)
. reduce 284 (src line 1943)
sym goto 123
expr goto 402
......@@ -8593,7 +8593,7 @@ state 520
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 284 (src line 1882)
. reduce 284 (src line 1943)
sym goto 123
expr goto 402
......@@ -8627,19 +8627,19 @@ state 521
state 522
pexpr_no_paren: convtype '(' expr ocomma ')'. (135)
. reduce 135 (src line 986)
. reduce 135 (src line 1047)
state 523
pexpr_no_paren: comptype lbrace start_complit braced_keyval_list '}'. (136)
. reduce 136 (src line 992)
. reduce 136 (src line 1053)
state 524
stmt_list: stmt_list ';' stmt. (271)
. reduce 271 (src line 1813)
. reduce 271 (src line 1874)
state 525
......@@ -8654,31 +8654,31 @@ state 525
state 526
othertype: LMAP '[' ntype ']' ntype. (195)
. reduce 195 (src line 1269)
. reduce 195 (src line 1330)
state 527
structtype: LSTRUCT lbrace structdcl_list osemi '}'. (200)
. reduce 200 (src line 1289)
. reduce 200 (src line 1350)
state 528
structdcl_list: structdcl_list ';' structdcl. (227)
. reduce 227 (src line 1550)
. reduce 227 (src line 1611)
state 529
structdcl: new_name_list ntype oliteral. (230)
. reduce 230 (src line 1565)
. reduce 230 (src line 1626)
state 530
new_name_list: new_name_list ',' new_name. (273)
. reduce 273 (src line 1826)
. reduce 273 (src line 1887)
state 531
......@@ -8686,7 +8686,7 @@ state 531
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 594
......@@ -8700,7 +8700,7 @@ state 532
state 533
structdcl: '*' embed oliteral. (233)
. reduce 233 (src line 1601)
. reduce 233 (src line 1662)
state 534
......@@ -8713,19 +8713,19 @@ state 534
state 535
packname: LNAME '.' sym. (237)
. reduce 237 (src line 1633)
. reduce 237 (src line 1694)
state 536
interfacetype: LINTERFACE lbrace interfacedcl_list osemi '}'. (202)
. reduce 202 (src line 1302)
. reduce 202 (src line 1363)
state 537
interfacedcl_list: interfacedcl_list ';' interfacedcl. (229)
. reduce 229 (src line 1560)
. reduce 229 (src line 1621)
state 538
......@@ -8738,13 +8738,13 @@ state 538
state 539
interfacedcl: '(' packname ')'. (241)
. reduce 241 (src line 1663)
. reduce 241 (src line 1724)
state 540
hidden_type_misc: '[' ']' hidden_type. (319)
. reduce 319 (src line 2029)
. reduce 319 (src line 2090)
state 541
......@@ -8787,13 +8787,13 @@ state 544
hidden_structdcl_list: hidden_structdcl_list.';' hidden_structdcl
';' shift 601
. reduce 299 (src line 1928)
. reduce 299 (src line 1989)
state 545
hidden_structdcl_list: hidden_structdcl. (348)
. reduce 348 (src line 2223)
. reduce 348 (src line 2284)
state 546
......@@ -8829,13 +8829,13 @@ state 548
hidden_interfacedcl_list: hidden_interfacedcl_list.';' hidden_interfacedcl
';' shift 604
. reduce 301 (src line 1934)
. reduce 301 (src line 1995)
state 549
hidden_interfacedcl_list: hidden_interfacedcl. (350)
. reduce 350 (src line 2233)
. reduce 350 (src line 2294)
state 550
......@@ -8848,23 +8848,23 @@ state 550
state 551
hidden_interfacedcl: hidden_type. (334)
. reduce 334 (src line 2140)
. reduce 334 (src line 2201)
state 552
sym: LNAME. (157)
hidden_type_misc: LNAME. (318)
'(' reduce 157 (src line 1114)
. reduce 318 (src line 2018)
'(' reduce 157 (src line 1175)
. reduce 318 (src line 2079)
state 553
sym: hidden_importsym. (158)
hidden_type_misc: hidden_importsym. (317)
'(' reduce 158 (src line 1123)
. reduce 317 (src line 2013)
'(' reduce 158 (src line 1184)
. reduce 317 (src line 2074)
state 554
......@@ -8877,13 +8877,13 @@ state 554
state 555
hidden_type_misc: LCHAN LCOMM hidden_type. (327)
. reduce 327 (src line 2065)
. reduce 327 (src line 2126)
state 556
hidden_type_recv_chan: LCOMM LCHAN hidden_type. (328)
. reduce 328 (src line 2072)
. reduce 328 (src line 2133)
state 557
......@@ -8896,7 +8896,7 @@ state 557
state 558
hidden_import: LCONST hidden_pkg_importsym '=' hidden_constant ';'. (306)
. reduce 306 (src line 1954)
. reduce 306 (src line 2015)
state 559
......@@ -8909,7 +8909,7 @@ state 559
state 560
hidden_literal: '-' LLITERAL. (340)
. reduce 340 (src line 2170)
. reduce 340 (src line 2231)
state 561
......@@ -8934,7 +8934,7 @@ state 562
'(' shift 612
'[' shift 342
'@' shift 13
. reduce 335 (src line 2145)
. reduce 335 (src line 2206)
hidden_importsym goto 340
hidden_funres goto 611
......@@ -8954,13 +8954,13 @@ state 563
state 564
hidden_funarg_list: hidden_funarg_list ',' hidden_funarg. (347)
. reduce 347 (src line 2218)
. reduce 347 (src line 2279)
state 565
hidden_funarg: sym hidden_type oliteral. (330)
. reduce 330 (src line 2086)
. reduce 330 (src line 2147)
state 566
......@@ -8968,7 +8968,7 @@ state 566
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 615
......@@ -8986,7 +8986,7 @@ state 568
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 287 (src line 1895)
. reduce 287 (src line 1956)
sym goto 105
dcl_name goto 104
......@@ -9000,7 +9000,7 @@ state 569
constdcl1: dcl_name_list ntype. (45)
'=' shift 367
. reduce 45 (src line 387)
. reduce 45 (src line 448)
state 570
......@@ -9020,7 +9020,7 @@ state 570
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 249 (src line 1708)
. reduce 249 (src line 1769)
sym goto 247
ntype goto 249
......@@ -9049,7 +9049,7 @@ state 571
state 572
fndcl: sym '(' oarg_type_list_ocomma ')' fnres. (205)
. reduce 205 (src line 1337)
. reduce 205 (src line 1398)
state 573
......@@ -9084,7 +9084,7 @@ state 574
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -9149,7 +9149,7 @@ state 575
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 67 (src line 611)
. reduce 67 (src line 672)
state 576
......@@ -9195,7 +9195,7 @@ state 576
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 68 (src line 618)
. reduce 68 (src line 679)
state 577
......@@ -9217,11 +9217,11 @@ state 578
error shift 307
LLITERAL shift 68
LBREAK shift 41
LCASE reduce 251 (src line 1720)
LCASE reduce 251 (src line 1781)
LCHAN shift 78
LCONST shift 47
LCONTINUE shift 42
LDEFAULT reduce 251 (src line 1720)
LDEFAULT reduce 251 (src line 1781)
LDEFER shift 44
LFALL shift 40
LFOR shift 50
......@@ -9245,9 +9245,9 @@ state 578
'*' shift 58
'&' shift 59
'(' shift 67
';' reduce 251 (src line 1720)
';' reduce 251 (src line 1781)
'{' shift 308
'}' reduce 251 (src line 1720)
'}' reduce 251 (src line 1781)
'!' shift 62
'~' shift 63
'[' shift 77
......@@ -9302,27 +9302,27 @@ state 579
state 580
case: LDEFAULT ':'. (58)
. reduce 58 (src line 525)
. reduce 58 (src line 586)
state 581
if_stmt: LIF $$78 if_header $$79 loop_body $$80.elseif_list else
elseif_list: . (84)
. reduce 84 (src line 735)
. reduce 84 (src line 796)
elseif_list goto 628
state 582
pseudocall: pexpr '(' expr_or_type_list LDDD ocomma ')'. (125)
. reduce 125 (src line 935)
. reduce 125 (src line 996)
state 583
pexpr_no_paren: pexpr '[' oexpr ':' oexpr ']'. (132)
. reduce 132 (src line 971)
. reduce 132 (src line 1032)
state 584
......@@ -9348,7 +9348,7 @@ state 584
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 290 (src line 1900)
. reduce 290 (src line 1961)
sym goto 123
expr goto 188
......@@ -9371,19 +9371,19 @@ state 584
state 585
keyval_list: keyval_list ',' keyval. (282)
. reduce 282 (src line 1873)
. reduce 282 (src line 1934)
state 586
keyval_list: keyval_list ',' bare_complitexpr. (283)
. reduce 283 (src line 1877)
. reduce 283 (src line 1938)
state 587
keyval: expr ':' complitexpr. (141)
. reduce 141 (src line 1021)
. reduce 141 (src line 1082)
state 588
......@@ -9429,14 +9429,14 @@ state 588
'/' shift 146
'%' shift 147
'&' shift 148
. reduce 144 (src line 1047)
. reduce 144 (src line 1108)
state 589
complitexpr: '{'.start_complit braced_keyval_list '}'
start_complit: . (140)
. reduce 140 (src line 1014)
. reduce 140 (src line 1075)
start_complit goto 630
......@@ -9458,22 +9458,22 @@ state 592
ntype: '(' ntype ')'. (171)
non_recvchantype: '(' ntype ')'. (180)
LBODY reduce 180 (src line 1216)
'(' reduce 180 (src line 1216)
'{' reduce 180 (src line 1216)
. reduce 171 (src line 1197)
LBODY reduce 180 (src line 1277)
'(' reduce 180 (src line 1277)
'{' reduce 180 (src line 1277)
. reduce 171 (src line 1258)
state 593
compound_stmt: '{' $$59 stmt_list '}'. (60)
. reduce 60 (src line 550)
. reduce 60 (src line 611)
state 594
structdcl: '(' embed ')' oliteral. (232)
. reduce 232 (src line 1595)
. reduce 232 (src line 1656)
state 595
......@@ -9481,7 +9481,7 @@ state 595
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 633
......@@ -9490,7 +9490,7 @@ state 596
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 634
......@@ -9510,7 +9510,7 @@ state 597
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 212 (src line 1470)
. reduce 212 (src line 1531)
sym goto 123
dotname goto 493
......@@ -9528,7 +9528,7 @@ state 597
state 598
hidden_type_misc: '[' LLITERAL ']' hidden_type. (320)
. reduce 320 (src line 2033)
. reduce 320 (src line 2094)
state 599
......@@ -9555,7 +9555,7 @@ state 599
state 600
hidden_type_misc: LSTRUCT '{' ohidden_structdcl_list '}'. (322)
. reduce 322 (src line 2041)
. reduce 322 (src line 2102)
state 601
......@@ -9575,14 +9575,14 @@ state 602
oliteral: . (302)
LLITERAL shift 428
. reduce 302 (src line 1936)
. reduce 302 (src line 1997)
oliteral goto 638
state 603
hidden_type_misc: LINTERFACE '{' ohidden_interfacedcl_list '}'. (323)
. reduce 323 (src line 2045)
. reduce 323 (src line 2106)
state 604
......@@ -9616,7 +9616,7 @@ state 605
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 296 (src line 1918)
. reduce 296 (src line 1979)
sym goto 357
hidden_importsym goto 11
......@@ -9627,7 +9627,7 @@ state 605
state 606
hidden_type_misc: LCHAN '(' hidden_type_recv_chan ')'. (326)
. reduce 326 (src line 2059)
. reduce 326 (src line 2120)
state 607
......@@ -9645,7 +9645,7 @@ state 607
'(' shift 612
'[' shift 342
'@' shift 13
. reduce 335 (src line 2145)
. reduce 335 (src line 2206)
hidden_importsym goto 340
hidden_funres goto 611
......@@ -9672,19 +9672,19 @@ state 608
state 609
hidden_import: LCONST hidden_pkg_importsym hidden_type '=' hidden_constant ';'. (307)
. reduce 307 (src line 1958)
. reduce 307 (src line 2019)
state 610
hidden_fndcl: hidden_pkg_importsym '(' ohidden_funarg_list ')' ohidden_funres. (207)
. reduce 207 (src line 1406)
. reduce 207 (src line 1467)
state 611
ohidden_funres: hidden_funres. (336)
. reduce 336 (src line 2149)
. reduce 336 (src line 2210)
state 612
......@@ -9694,7 +9694,7 @@ state 612
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 296 (src line 1918)
. reduce 296 (src line 1979)
sym goto 357
hidden_importsym goto 11
......@@ -9705,7 +9705,7 @@ state 612
state 613
hidden_funres: hidden_type. (338)
. reduce 338 (src line 2156)
. reduce 338 (src line 2217)
state 614
......@@ -9715,7 +9715,7 @@ state 614
LNAME shift 10
'?' shift 12
'@' shift 13
. reduce 296 (src line 1918)
. reduce 296 (src line 1979)
sym goto 357
hidden_importsym goto 11
......@@ -9726,19 +9726,19 @@ state 614
state 615
hidden_funarg: sym LDDD hidden_type oliteral. (331)
. reduce 331 (src line 2095)
. reduce 331 (src line 2156)
state 616
common_dcl: lconst '(' constdcl ';' constdcl_list osemi ')'. (33)
. reduce 33 (src line 331)
. reduce 33 (src line 392)
state 617
constdcl_list: constdcl_list ';' constdcl1. (223)
. reduce 223 (src line 1533)
. reduce 223 (src line 1594)
state 618
......@@ -9751,25 +9751,25 @@ state 618
state 619
fnres: '(' oarg_type_list_ocomma ')'. (214)
. reduce 214 (src line 1479)
. reduce 214 (src line 1540)
state 620
loop_body: LBODY $$65 stmt_list '}'. (66)
. reduce 66 (src line 605)
. reduce 66 (src line 666)
state 621
for_header: osimple_stmt ';' osimple_stmt ';' osimple_stmt. (70)
. reduce 70 (src line 631)
. reduce 70 (src line 692)
state 622
switch_stmt: LSWITCH $$88 if_header $$89 LBODY caseblock_list '}'. (90)
. reduce 90 (src line 769)
. reduce 90 (src line 830)
state 623
......@@ -9777,13 +9777,13 @@ state 623
stmt_list: stmt_list.';' stmt
';' shift 416
. reduce 62 (src line 572)
. reduce 62 (src line 633)
state 624
case: LCASE expr_or_type_list ':'. (55)
. reduce 55 (src line 474)
. reduce 55 (src line 535)
state 625
......@@ -9918,7 +9918,7 @@ state 628
else: . (86)
LELSE shift 650
. reduce 86 (src line 744)
. reduce 86 (src line 805)
elseif goto 649
else goto 648
......@@ -9954,7 +9954,7 @@ state 630
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 284 (src line 1882)
. reduce 284 (src line 1943)
sym goto 123
expr goto 402
......@@ -9980,55 +9980,55 @@ state 630
state 631
bare_complitexpr: '{' start_complit braced_keyval_list '}'. (143)
. reduce 143 (src line 1041)
. reduce 143 (src line 1102)
state 632
pexpr_no_paren: '(' expr_or_type ')' '{' start_complit braced_keyval_list '}'. (138)
. reduce 138 (src line 1005)
. reduce 138 (src line 1066)
state 633
structdcl: '(' '*' embed ')' oliteral. (234)
. reduce 234 (src line 1607)
. reduce 234 (src line 1668)
state 634
structdcl: '*' '(' embed ')' oliteral. (235)
. reduce 235 (src line 1614)
. reduce 235 (src line 1675)
state 635
indcl: '(' oarg_type_list_ocomma ')' fnres. (242)
. reduce 242 (src line 1669)
. reduce 242 (src line 1730)
state 636
hidden_type_misc: LMAP '[' hidden_type ']' hidden_type. (321)
. reduce 321 (src line 2037)
. reduce 321 (src line 2098)
state 637
hidden_structdcl_list: hidden_structdcl_list ';' hidden_structdcl. (349)
. reduce 349 (src line 2228)
. reduce 349 (src line 2289)
state 638
hidden_structdcl: sym hidden_type oliteral. (332)
. reduce 332 (src line 2111)
. reduce 332 (src line 2172)
state 639
hidden_interfacedcl_list: hidden_interfacedcl_list ';' hidden_interfacedcl. (351)
. reduce 351 (src line 2238)
. reduce 351 (src line 2299)
state 640
......@@ -10041,7 +10041,7 @@ state 640
state 641
hidden_type_func: LFUNC '(' ohidden_funarg_list ')' ohidden_funres. (329)
. reduce 329 (src line 2080)
. reduce 329 (src line 2141)
state 642
......@@ -10081,7 +10081,7 @@ state 645
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 212 (src line 1470)
. reduce 212 (src line 1531)
sym goto 123
dotname goto 493
......@@ -10193,13 +10193,13 @@ state 647
state 648
if_stmt: LIF $$78 if_header $$79 loop_body $$80 elseif_list else. (81)
. reduce 81 (src line 704)
. reduce 81 (src line 765)
state 649
elseif_list: elseif_list elseif. (85)
. reduce 85 (src line 739)
. reduce 85 (src line 800)
state 650
......@@ -10215,7 +10215,7 @@ state 650
state 651
pexpr_no_paren: pexpr '[' oexpr ':' oexpr ':' oexpr ']'. (133)
. reduce 133 (src line 975)
. reduce 133 (src line 1036)
state 652
......@@ -10240,7 +10240,7 @@ state 653
'(' shift 612
'[' shift 342
'@' shift 13
. reduce 335 (src line 2145)
. reduce 335 (src line 2206)
hidden_importsym goto 340
hidden_funres goto 611
......@@ -10253,13 +10253,13 @@ state 653
state 654
hidden_constant: '(' hidden_literal '+' hidden_literal ')'. (343)
. reduce 343 (src line 2198)
. reduce 343 (src line 2259)
state 655
hidden_funres: '(' ohidden_funarg_list ')'. (337)
. reduce 337 (src line 2151)
. reduce 337 (src line 2212)
state 656
......@@ -10277,7 +10277,7 @@ state 656
'(' shift 612
'[' shift 342
'@' shift 13
. reduce 335 (src line 2145)
. reduce 335 (src line 2206)
hidden_importsym goto 340
hidden_funres goto 611
......@@ -10290,51 +10290,51 @@ state 656
state 657
fndcl: '(' oarg_type_list_ocomma ')' sym '(' oarg_type_list_ocomma ')' fnres. (206)
. reduce 206 (src line 1369)
. reduce 206 (src line 1430)
state 658
case: LCASE expr_or_type_list '=' expr ':'. (56)
. reduce 56 (src line 498)
. reduce 56 (src line 559)
state 659
case: LCASE expr_or_type_list LCOLAS expr ':'. (57)
. reduce 57 (src line 516)
. reduce 57 (src line 577)
state 660
elseif: LELSE LIF.$$82 if_header loop_body
$$82: . (82)
. reduce 82 (src line 721)
. reduce 82 (src line 782)
$$82 goto 665
state 661
else: LELSE compound_stmt. (87)
. reduce 87 (src line 748)
. reduce 87 (src line 809)
state 662
complitexpr: '{' start_complit braced_keyval_list '}'. (145)
. reduce 145 (src line 1049)
. reduce 145 (src line 1110)
state 663
hidden_interfacedcl: sym '(' ohidden_funarg_list ')' ohidden_funres. (333)
. reduce 333 (src line 2135)
. reduce 333 (src line 2196)
state 664
hidden_fndcl: '(' hidden_funarg_list ')' sym '(' ohidden_funarg_list ')' ohidden_funres. (208)
. reduce 208 (src line 1432)
. reduce 208 (src line 1493)
state 665
......@@ -10360,7 +10360,7 @@ state 665
'[' shift 77
'?' shift 12
'@' shift 13
. reduce 294 (src line 1912)
. reduce 294 (src line 1973)
sym goto 123
expr goto 48
......@@ -10394,7 +10394,7 @@ state 666
state 667
elseif: LELSE LIF $$82 if_header loop_body. (83)
. reduce 83 (src line 726)
. reduce 83 (src line 787)
76 terminals, 142 nonterminals
......
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ignore
// This program implements the core idea from
//
// Clinton L. Jeffery, Generating LR syntax error messages from examples,
// ACM TOPLAS 25(5) (September 2003). http://doi.acm.org/10.1145/937563.937566
//
// It reads Bison's summary of a grammar followed by a file
// like go.errors, replacing lines beginning with % by the
// yystate and yychar that will be active when an error happens
// while parsing that line.
//
// Unlike the system described in the paper, the lines in go.errors
// give grammar symbol name lists, not actual program fragments.
// This is a little less programmer-friendly but doesn't require being
// able to run the text through lex.c.
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
"strconv"
"strings"
)
func xatoi(s string) int {
n, err := strconv.Atoi(s)
if err != nil {
log.Fatal(err)
}
return n
}
func trimParen(s string) string {
s = strings.TrimPrefix(s, "(")
s = strings.TrimSuffix(s, ")")
return s
}
type action struct {
token string
n int
}
var shift = map[int][]action{}
var reduce = map[int][]action{}
type rule struct {
lhs string
size int
}
var rules = map[int]rule{}
func readYaccOutput() {
r, err := os.Open("y.output")
if err != nil {
log.Fatal(err)
}
defer r.Close()
var state int
scanner := bufio.NewScanner(r)
for scanner.Scan() {
f := strings.Fields(scanner.Text())
nf := len(f)
if nf >= 4 && f[1] == "terminals," && f[3] == "nonterminals" {
// We're done.
break
}
if nf >= 2 && f[0] == "state" {
state = xatoi(f[1])
continue
}
if nf >= 3 && (f[1] == "shift" || f[1] == "goto") {
shift[state] = append(shift[state], action{f[0], xatoi(f[2])})
continue
}
if nf >= 3 && f[1] == "reduce" {
reduce[state] = append(reduce[state], action{f[0], xatoi(f[2])})
continue
}
if nf >= 3 && strings.HasSuffix(f[0], ":") && strings.HasPrefix(f[nf-1], "(") && strings.HasSuffix(f[nf-1], ")") {
n := xatoi(trimParen(f[nf-1]))
size := nf - 2
if size == 1 && f[1] == "." {
size = 0
}
rules[n] = rule{strings.TrimSuffix(f[0], ":"), size}
continue
}
}
}
func runMachine(w io.Writer, s string) {
f := strings.Fields(s)
// Run it through the LR machine and print the induced "yystate, yychar,"
// at the point where the error happens.
var stack []int
state := 0
i := 1
tok := ""
Loop:
if tok == "" && i < len(f) {
tok = f[i]
i++
}
for _, a := range shift[state] {
if a.token == tok {
if false {
fmt.Println("SHIFT ", tok, " ", state, " -> ", a)
}
stack = append(stack, state)
state = a.n
tok = ""
goto Loop
}
}
for _, a := range reduce[state] {
if a.token == tok || a.token == "." {
stack = append(stack, state)
rule, ok := rules[a.n]
if !ok {
log.Fatal("missing rule")
}
stack = stack[:len(stack)-rule.size]
state = stack[len(stack)-1]
stack = stack[:len(stack)-1]
if tok != "" {
i--
}
tok = rule.lhs
if false {
fmt.Println("REDUCE ", stack, " ", state, " ", tok, " rule ", rule)
}
goto Loop
}
}
// No shift or reduce applied - found the error.
fmt.Fprintf(w, "\t{%d, %s,\n", state, tok)
}
func processGoErrors() {
r, err := os.Open("go.errors")
if err != nil {
log.Fatal(err)
}
defer r.Close()
w, err := os.Create("yymsg.go")
if err != nil {
log.Fatal(err)
}
defer w.Close()
fmt.Fprintf(w, "// DO NOT EDIT - generated with go generate\n\n")
scanner := bufio.NewScanner(r)
for scanner.Scan() {
s := scanner.Text()
// Treat % as first field on line as introducing a pattern (token sequence).
if strings.HasPrefix(strings.TrimSpace(s), "%") {
runMachine(w, s)
continue
}
fmt.Fprintln(w, s)
}
}
func main() {
readYaccOutput()
processGoErrors()
}
// DO NOT EDIT - generated with go generate
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Example-based syntax error messages.
// See yaccerrors.go.
package gc
var yymsg = []struct {
yystate int
yychar int
msg string
}{
// Each line of the form % token list
// is converted by yaccerrors.go into the yystate and yychar caused
// by that token list.
{332, ',',
"unexpected comma during import block"},
{89, ';',
"missing import path; require quoted string"},
{390, ';',
"missing { after if clause"},
{387, ';',
"missing { after switch clause"},
{279, ';',
"missing { after for clause"},
{498, LBODY,
"missing { after for clause"},
{17, '{',
"unexpected semicolon or newline before {"},
{111, ';',
"unexpected semicolon or newline in type declaration"},
{78, '}',
"unexpected } in channel type"},
{78, ')',
"unexpected ) in channel type"},
{78, ',',
"unexpected comma in channel type"},
{416, LELSE,
"unexpected semicolon or newline before else"},
{329, ',',
"name list not allowed in interface type"},
{279, LVAR,
"var declaration not allowed in for initializer"},
{25, '{',
"unexpected { at end of statement"},
{371, '{',
"unexpected { at end of statement"},
{122, ';',
"argument to go/defer must be function call"},
{398, ';',
"need trailing comma before newline in composite literal"},
{414, ';',
"need trailing comma before newline in composite literal"},
{124, LNAME,
"nested func not allowed"},
{650, ';',
"else must be followed by if or statement block"},
}
......@@ -128,6 +128,7 @@ const (
TYPEDEF
TYPENAME
UNION
ERROR
)
const ENDFILE = 0
......@@ -325,8 +326,24 @@ var resrv = []Resrv{
{"type", TYPEDEF},
{"union", UNION},
{"struct", UNION},
{"error", ERROR},
}
type Error struct {
lineno int
tokens []string
msg string
}
var errors []Error
type Row struct {
actions []int
defaultAction int
}
var stateTable []Row
var zznewstate = 0
const EOF = -1
......@@ -402,6 +419,27 @@ outer:
}
start = chfind(1, tokname)
case ERROR:
lno := lineno
var tokens []string
for {
t := gettok()
if t == ':' {
break
}
if t != IDENTIFIER && t != IDENTCOLON {
errorf("bad syntax in %%error")
}
tokens = append(tokens, tokname)
if t == IDENTCOLON {
break
}
}
if gettok() != IDENTIFIER {
errorf("bad syntax in %%error")
}
errors = append(errors, Error{lno, tokens, tokname})
case TYPEDEF:
t = gettok()
if t != TYPENAME {
......@@ -2155,6 +2193,10 @@ func output() {
}
fmt.Fprintf(ftable, "\nvar %sExca = [...]int{\n", prefix)
if len(errors) > 0 {
stateTable = make([]Row, nstate)
}
noset := mkset()
// output the stuff for state i
......@@ -2368,6 +2410,15 @@ func wrstate(i int) {
var j0, j1, u int
var pp, qq int
if len(errors) > 0 {
actions := append([]int(nil), temp1...)
defaultAction := ERRCODE
if lastred != 0 {
defaultAction = -lastred
}
stateTable[i] = Row{actions, defaultAction}
}
if foutput == nil {
return
}
......@@ -2914,6 +2965,20 @@ func others() {
}
fmt.Fprintf(ftable, "%d,\n}\n", 0)
// Custom error messages.
fmt.Fprintf(ftable, "\n")
fmt.Fprintf(ftable, "var %sErrorMessages = [...]struct {\n", prefix)
fmt.Fprintf(ftable, "\tstate int\n")
fmt.Fprintf(ftable, "\ttoken int\n")
fmt.Fprintf(ftable, "\tmsg string\n")
fmt.Fprintf(ftable, "}{\n")
for _, error := range errors {
lineno = error.lineno
state, token := runMachine(error.tokens)
fmt.Fprintf(ftable, "\t{%v, %v, %s},\n", state, token, error.msg)
}
fmt.Fprintf(ftable, "}\n")
// copy parser text
ch := getrune(finput)
for ch != EOF {
......@@ -2932,6 +2997,59 @@ func others() {
fmt.Fprintf(ftable, "%v", parts[1])
}
func runMachine(tokens []string) (state, token int) {
var stack []int
i := 0
token = -1
Loop:
if token < 0 {
token = chfind(2, tokens[i])
i++
}
row := stateTable[state]
c := token
if token >= NTBASE {
c = token - NTBASE + ntokens
}
action := row.actions[c]
if action == 0 {
action = row.defaultAction
}
switch {
case action == ACCEPTCODE:
errorf("tokens are accepted")
return
case action == ERRCODE:
if token >= NTBASE {
errorf("error at non-terminal token %s", symnam(token))
}
return
case action > 0:
// Shift to state action.
stack = append(stack, state)
state = action
token = -1
goto Loop
default:
// Reduce by production -action.
prod := prdptr[-action]
if rhsLen := len(prod) - 2; rhsLen > 0 {
n := len(stack) - rhsLen
state = stack[n]
stack = stack[:n]
}
if token >= 0 {
i--
}
token = prod[0]
goto Loop
}
}
func arout(s string, v []int, n int) {
s = prefix + s
fmt.Fprintf(ftable, "var %v = [...]int{\n", s)
......@@ -3212,7 +3330,6 @@ type $$Parser interface {
type $$ParserImpl struct {
lookahead func() int
state func() int
}
func (p *$$ParserImpl) Lookahead() int {
......@@ -3222,7 +3339,6 @@ func (p *$$ParserImpl) Lookahead() int {
func $$NewParser() $$Parser {
p := &$$ParserImpl{
lookahead: func() int { return -1 },
state: func() int { return -1 },
}
return p
}
......@@ -3253,6 +3369,13 @@ func $$ErrorMessage(state, lookAhead int) string {
if !$$ErrorVerbose {
return "syntax error"
}
for _, e := range $$ErrorMessages {
if e.state == state && e.token == lookAhead {
return "syntax error: " + e.msg
}
}
res := "syntax error: unexpected " + $$Tokname(lookAhead)
// To match Bison, suggest at most four expected tokens.
......@@ -3355,7 +3478,6 @@ func ($$rcvr *$$ParserImpl) Parse($$lex $$Lexer) int {
$$state := 0
$$char := -1
$$token := -1 // $$char translated into internal numbering
$$rcvr.state = func() int { return $$state }
$$rcvr.lookahead = func() int { return $$char }
defer func() {
// Make sure we report no lookahead when not parsing.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment