pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/pkgtools/pkglint



Module Name:    pkgsrc
Committed By:   rillig
Date:           Fri Mar 17 22:43:34 UTC 2017

Modified Files:
        pkgsrc/pkgtools/pkglint: Makefile
Added Files:
        pkgsrc/pkgtools/pkglint/files: shellyacc.go
        pkgsrc/pkgtools/pkglint/files/licenses: licensesyacc.go

Log Message:
Updated pkglint to 5.4.19.

Changes since 5.4.18:

* Added generated Go yacc source files to CVS, since starting with Go 1.8
  the yacc tool is no longer part of the core distribution. The dependency
  on yacc would pull in all the Go tools, which are quite a few, and some
  of these do not currently build since they depend on go-crypto. See
  https://mail-index.netbsd.org/tech-pkg/2017/03/17/msg017900.html


To generate a diff of this commit:
cvs rdiff -u -r1.511 -r1.512 pkgsrc/pkgtools/pkglint/Makefile
cvs rdiff -u -r0 -r1.1 pkgsrc/pkgtools/pkglint/files/shellyacc.go
cvs rdiff -u -r0 -r1.1 pkgsrc/pkgtools/pkglint/files/licenses/licensesyacc.go

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/pkgtools/pkglint/Makefile
diff -u pkgsrc/pkgtools/pkglint/Makefile:1.511 pkgsrc/pkgtools/pkglint/Makefile:1.512
--- pkgsrc/pkgtools/pkglint/Makefile:1.511      Thu Mar 16 20:03:22 2017
+++ pkgsrc/pkgtools/pkglint/Makefile    Fri Mar 17 22:43:34 2017
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.511 2017/03/16 20:03:22 bsiegert Exp $
+# $NetBSD: Makefile,v 1.512 2017/03/17 22:43:34 rillig Exp $
 
-PKGNAME=       pkglint-5.4.18
+PKGNAME=       pkglint-5.4.19
 DISTFILES=     # none
 CATEGORIES=    pkgtools
 
@@ -9,7 +9,6 @@ HOMEPAGE=       http://www.NetBSD.org/docs/pkg
 COMMENT=       Verifier for NetBSD packages
 LICENSE=       2-clause-bsd
 CONFLICTS+=    pkglint4-[0-9]*
-BUILD_DEPENDS+=        go-tools>=1.8:../../devel/go-tools
 
 NO_CHECKSUM=   yes
 USE_LANGUAGES= c
@@ -27,13 +26,10 @@ do-extract:
        ${RUN} ${MKDIR} ${WRKDIR}/pkglint
        ${RUN} cd ${FILESDIR} && ${PAX} -rw . ${WRKDIR}/pkglint
 
-pre-build:
-       ${RUN} env GOPATH=${WRKDIR}:${BUILDLINK_DIR}/gopkg go generate ${GO_BUILD_PATTERN}
-
 pre-install:
        ${RUN} rm -rf ${WRKDIR}/pkg
 
-do-install: do-install-man
+post-install: do-install-man
 
 .include "../../mk/bsd.prefs.mk"
 

Added files:

Index: pkgsrc/pkgtools/pkglint/files/shellyacc.go
diff -u /dev/null pkgsrc/pkgtools/pkglint/files/shellyacc.go:1.1
--- /dev/null   Fri Mar 17 22:43:34 2017
+++ pkgsrc/pkgtools/pkglint/files/shellyacc.go  Fri Mar 17 22:43:34 2017
@@ -0,0 +1,1250 @@
+//line shell.y:2
+package main
+
+import __yyfmt__ "fmt"
+
+//line shell.y:2
+//line shell.y:18
+type shyySymType struct {
+       yys             int
+       IONum           int
+       List            *MkShList
+       AndOr           *MkShAndOr
+       Pipeline        *MkShPipeline
+       Command         *MkShCommand
+       CompoundCommand *MkShCompoundCommand
+       Separator       MkShSeparator
+       Simple          *MkShSimpleCommand
+       FuncDef         *MkShFunctionDefinition
+       For             *MkShForClause
+       If              *MkShIfClause
+       Case            *MkShCaseClause
+       CaseItem        *MkShCaseItem
+       Loop            *MkShLoopClause
+       Words           []*ShToken
+       Word            *ShToken
+       Redirections    []*MkShRedirection
+       Redirection     *MkShRedirection
+}
+
+const tkWORD = 57346
+const tkASSIGNMENT_WORD = 57347
+const tkNEWLINE = 57348
+const tkIO_NUMBER = 57349
+const tkBACKGROUND = 57350
+const tkPIPE = 57351
+const tkSEMI = 57352
+const tkAND = 57353
+const tkOR = 57354
+const tkSEMISEMI = 57355
+const tkLT = 57356
+const tkGT = 57357
+const tkLTLT = 57358
+const tkGTGT = 57359
+const tkLTAND = 57360
+const tkGTAND = 57361
+const tkLTGT = 57362
+const tkLTLTDASH = 57363
+const tkGTPIPE = 57364
+const tkIF = 57365
+const tkTHEN = 57366
+const tkELSE = 57367
+const tkELIF = 57368
+const tkFI = 57369
+const tkDO = 57370
+const tkDONE = 57371
+const tkCASE = 57372
+const tkESAC = 57373
+const tkWHILE = 57374
+const tkUNTIL = 57375
+const tkFOR = 57376
+const tkLPAREN = 57377
+const tkRPAREN = 57378
+const tkLBRACE = 57379
+const tkRBRACE = 57380
+const tkEXCLAM = 57381
+const tkIN = 57382
+
+var shyyToknames = [...]string{
+       "$end",
+       "error",
+       "$unk",
+       "tkWORD",
+       "tkASSIGNMENT_WORD",
+       "tkNEWLINE",
+       "tkIO_NUMBER",
+       "tkBACKGROUND",
+       "tkPIPE",
+       "tkSEMI",
+       "tkAND",
+       "tkOR",
+       "tkSEMISEMI",
+       "tkLT",
+       "tkGT",
+       "tkLTLT",
+       "tkGTGT",
+       "tkLTAND",
+       "tkGTAND",
+       "tkLTGT",
+       "tkLTLTDASH",
+       "tkGTPIPE",
+       "tkIF",
+       "tkTHEN",
+       "tkELSE",
+       "tkELIF",
+       "tkFI",
+       "tkDO",
+       "tkDONE",
+       "tkCASE",
+       "tkESAC",
+       "tkWHILE",
+       "tkUNTIL",
+       "tkFOR",
+       "tkLPAREN",
+       "tkRPAREN",
+       "tkLBRACE",
+       "tkRBRACE",
+       "tkEXCLAM",
+       "tkIN",
+}
+var shyyStatenames = [...]string{}
+
+const shyyEofCode = 1
+const shyyErrCode = 2
+const shyyInitialStackSize = 16
+
+//line yacctab:1
+var shyyExca = [...]int{
+       -1, 0,
+       1, 3,
+       -2, 93,
+       -1, 1,
+       1, -1,
+       -2, 0,
+       -1, 154,
+       31, 93,
+       -2, 24,
+       -1, 162,
+       31, 92,
+       -2, 97,
+       -1, 166,
+       31, 44,
+       -2, 96,
+}
+
+const shyyNprod = 100
+const shyyPrivate = 57344
+
+var shyyTokenNames []string
+var shyyStates []string
+
+const shyyLast = 342
+
+var shyyAct = [...]int{
+
+       4, 121, 7, 135, 3, 5, 138, 134, 48, 25,
+       102, 14, 12, 49, 115, 64, 8, 76, 103, 84,
+       111, 97, 98, 9, 57, 57, 60, 65, 94, 147,
+       110, 125, 67, 68, 31, 152, 71, 72, 73, 140,
+       152, 30, 103, 32, 33, 29, 28, 36, 27, 88,
+       139, 139, 153, 89, 90, 91, 78, 79, 80, 81,
+       82, 83, 157, 34, 87, 86, 92, 151, 92, 65,
+       99, 100, 101, 156, 95, 93, 66, 144, 133, 35,
+       46, 137, 137, 75, 104, 54, 37, 39, 44, 41,
+       38, 40, 42, 45, 43, 108, 124, 123, 122, 74,
+       124, 123, 6, 95, 107, 56, 112, 63, 113, 158,
+       109, 139, 120, 105, 106, 52, 53, 85, 129, 130,
+       114, 58, 10, 6, 77, 50, 126, 51, 141, 142,
+       128, 127, 118, 70, 55, 145, 117, 148, 143, 146,
+       119, 149, 118, 69, 150, 59, 117, 136, 116, 24,
+       23, 154, 132, 131, 21, 160, 163, 164, 159, 22,
+       162, 165, 166, 161, 17, 26, 20, 35, 15, 16,
+       13, 47, 19, 155, 37, 39, 44, 41, 38, 40,
+       42, 45, 43, 31, 18, 2, 1, 0, 0, 0,
+       30, 0, 32, 33, 29, 28, 0, 27, 0, 11,
+       17, 26, 0, 35, 0, 0, 0, 0, 0, 0,
+       37, 39, 44, 41, 38, 40, 42, 45, 43, 31,
+       0, 0, 0, 0, 0, 0, 30, 0, 32, 33,
+       29, 28, 0, 27, 0, 11, 17, 26, 0, 35,
+       0, 0, 0, 0, 0, 0, 37, 39, 44, 41,
+       38, 40, 42, 45, 43, 31, 0, 0, 0, 0,
+       62, 61, 30, 35, 32, 33, 29, 28, 0, 27,
+       37, 39, 44, 41, 38, 40, 42, 45, 43, 96,
+       0, 0, 35, 0, 0, 0, 0, 0, 0, 37,
+       39, 44, 41, 38, 40, 42, 45, 43, 66, 0,
+       0, 35, 0, 0, 0, 0, 0, 0, 37, 39,
+       44, 41, 38, 40, 42, 45, 43, 35, 0, 0,
+       0, 0, 0, 0, 37, 39, 44, 41, 38, 40,
+       42, 45, 43, 37, 39, 44, 41, 38, 40, 42,
+       45, 43,
+}
+var shyyPact = [...]int{
+
+       96, -1000, -1000, -1000, 196, 74, -1000, 117, 104, -1000,
+       76, 232, -1000, -1000, 310, 310, 256, 72, -1000, -1000,
+       -1000, -1000, -1000, -1000, -1000, -1000, -1000, 96, 96, 139,
+       129, 96, 96, 96, -1000, 319, -1000, 120, 120, 120,
+       120, 120, 120, 120, 113, 113, -1000, 196, 96, 74,
+       -1000, -1000, 96, 96, 96, 76, 310, -1000, 310, 294,
+       -1000, -1000, -1000, -8, 275, -1000, -1000, -17, -14, 96,
+       96, 48, 14, 14, -1000, -1000, -1000, -1000, -1000, -1000,
+       -1000, -1000, -1000, -1000, -1000, -1000, -1000, 104, -1000, 196,
+       196, 232, -1000, 275, 96, -1000, -1000, -1000, -1000, -10,
+       -20, 96, -1000, 96, -1000, -1000, -1000, -1000, 11, -1000,
+       136, 96, 71, 2, -1000, 14, 126, 96, 96, -1000,
+       47, 12, -1000, 96, 96, -1000, -1000, 14, -1000, -1000,
+       -1000, 46, -2, -1000, -1000, -1000, 96, 107, 31, -1000,
+       -1000, 28, -1000, -1000, -1000, -1000, -1000, -1000, 160, 60,
+       26, -1000, 105, 96, 117, 96, 96, -1000, -1000, 75,
+       -1000, 96, 74, -1000, -1000, -1000, -1000,
+}
+var shyyPgo = [...]int{
+
+       0, 186, 185, 4, 184, 172, 2, 10, 16, 23,
+       122, 12, 11, 171, 8, 14, 170, 169, 15, 168,
+       166, 159, 1, 154, 153, 152, 7, 3, 150, 149,
+       148, 147, 6, 17, 145, 19, 105, 9, 63, 47,
+       0, 5,
+}
+var shyyR1 = [...]int{
+
+       0, 1, 2, 2, 8, 8, 8, 9, 9, 10,
+       10, 11, 11, 11, 11, 11, 12, 12, 12, 12,
+       12, 12, 12, 5, 3, 3, 6, 6, 20, 20,
+       20, 30, 30, 23, 23, 23, 25, 25, 24, 24,
+       31, 31, 27, 27, 27, 26, 26, 32, 32, 21,
+       21, 22, 22, 22, 28, 29, 19, 4, 7, 16,
+       16, 16, 16, 16, 34, 17, 17, 17, 17, 18,
+       18, 18, 18, 36, 36, 37, 37, 37, 37, 38,
+       38, 38, 38, 38, 38, 38, 33, 39, 39, 35,
+       41, 41, 40, 40, 14, 14, 13, 13, 15, 15,
+}
+var shyyR2 = [...]int{
+
+       0, 1, 1, 0, 1, 4, 4, 1, 2, 1,
+       4, 1, 1, 2, 1, 2, 1, 1, 1, 1,
+       1, 1, 1, 3, 2, 3, 1, 3, 4, 6,
+       7, 1, 2, 7, 7, 6, 1, 2, 1, 2,
+       3, 2, 2, 4, 5, 4, 4, 1, 3, 6,
+       5, 4, 5, 2, 3, 3, 5, 3, 3, 3,
+       2, 1, 2, 1, 1, 1, 1, 2, 2, 1,
+       1, 2, 2, 1, 2, 1, 2, 1, 2, 2,
+       2, 2, 2, 2, 2, 2, 1, 2, 2, 1,
+       1, 2, 1, 0, 1, 1, 2, 1, 2, 2,
+}
+var shyyChk = [...]int{
+
+       -1000, -1, -2, -3, -40, -41, 6, -6, -8, -9,
+       -10, 39, -11, -16, -12, -19, -17, 4, -4, -5,
+       -20, -23, -21, -28, -29, -37, 5, 37, 35, 34,
+       30, 23, 32, 33, -38, 7, -39, 14, 18, 15,
+       19, 17, 20, 22, 16, 21, 6, -13, -14, -41,
+       8, 10, 11, 12, 9, -10, -36, -37, -36, -34,
+       -37, 5, 4, 35, -18, -37, 4, -3, -3, 4,
+       4, -3, -3, -3, -38, -39, -33, 4, -33, -33,
+       -33, -33, -33, -33, -35, 4, -35, -8, -40, -40,
+       -40, -40, -37, -18, 36, -37, 4, 38, 36, -40,
+       -40, 24, -7, 28, -7, -9, -9, -11, -40, -7,
+       40, 40, -3, -3, -12, -15, -30, 10, 6, 4,
+       -40, -22, 27, 26, 25, 29, -7, -15, 4, -40,
+       -40, -24, -25, 31, -26, -27, -31, 35, -32, 4,
+       27, -3, -3, -7, 31, -27, -26, 31, -40, -3,
+       -32, 36, 9, 24, -6, 13, 13, 36, 4, -3,
+       -40, -14, -41, -40, -40, -22, -40,
+}
+var shyyDef = [...]int{
+
+       -2, -2, 1, 2, 0, 92, 90, 24, 26, 4,
+       7, 0, 9, 11, 12, 14, 61, 63, 16, 17,
+       18, 19, 20, 21, 22, 65, 66, 93, 93, 0,
+       0, 93, 93, 93, 75, 0, 77, 0, 0, 0,
+       0, 0, 0, 0, 0, 0, 91, 25, 93, 97,
+       94, 95, 93, 93, 93, 8, 13, 73, 15, 60,
+       67, 68, 64, 0, 62, 69, 70, 0, 0, 93,
+       93, 0, 0, 0, 76, 78, 79, 86, 80, 81,
+       82, 83, 84, 85, 87, 89, 88, 27, 96, 0,
+       0, 0, 74, 59, 93, 71, 72, 57, 23, 0,
+       0, 93, 54, 93, 55, 5, 6, 10, 0, 28,
+       0, 93, 0, 0, 56, 0, 0, 93, 93, 31,
+       0, 0, 50, 93, 93, 58, 29, 0, 32, 98,
+       99, 0, 0, 35, 38, 36, 93, 0, 0, 47,
+       49, 0, 53, 30, 33, 37, 39, 34, 42, 0,
+       0, 41, 0, 93, -2, 93, 93, 40, 48, 51,
+       43, 93, -2, 45, 46, 52, -2,
+}
+var shyyTok1 = [...]int{
+
+       1,
+}
+var shyyTok2 = [...]int{
+
+       2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+       12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+       22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+       32, 33, 34, 35, 36, 37, 38, 39, 40,
+}
+var shyyTok3 = [...]int{
+       0,
+}
+
+var shyyErrorMessages = [...]struct {
+       state int
+       token int
+       msg   string
+}{}
+
+//line yaccpar:1
+
+/*     parser for yacc output  */
+
+var (
+       shyyDebug        = 0
+       shyyErrorVerbose = false
+)
+
+type shyyLexer interface {
+       Lex(lval *shyySymType) int
+       Error(s string)
+}
+
+type shyyParser interface {
+       Parse(shyyLexer) int
+       Lookahead() int
+}
+
+type shyyParserImpl struct {
+       lval  shyySymType
+       stack [shyyInitialStackSize]shyySymType
+       char  int
+}
+
+func (p *shyyParserImpl) Lookahead() int {
+       return p.char
+}
+
+func shyyNewParser() shyyParser {
+       return &shyyParserImpl{}
+}
+
+const shyyFlag = -1000
+
+func shyyTokname(c int) string {
+       if c >= 1 && c-1 < len(shyyToknames) {
+               if shyyToknames[c-1] != "" {
+                       return shyyToknames[c-1]
+               }
+       }
+       return __yyfmt__.Sprintf("tok-%v", c)
+}
+
+func shyyStatname(s int) string {
+       if s >= 0 && s < len(shyyStatenames) {
+               if shyyStatenames[s] != "" {
+                       return shyyStatenames[s]
+               }
+       }
+       return __yyfmt__.Sprintf("state-%v", s)
+}
+
+func shyyErrorMessage(state, lookAhead int) string {
+       const TOKSTART = 4
+
+       if !shyyErrorVerbose {
+               return "syntax error"
+       }
+
+       for _, e := range shyyErrorMessages {
+               if e.state == state && e.token == lookAhead {
+                       return "syntax error: " + e.msg
+               }
+       }
+
+       res := "syntax error: unexpected " + shyyTokname(lookAhead)
+
+       // To match Bison, suggest at most four expected tokens.
+       expected := make([]int, 0, 4)
+
+       // Look for shiftable tokens.
+       base := shyyPact[state]
+       for tok := TOKSTART; tok-1 < len(shyyToknames); tok++ {
+               if n := base + tok; n >= 0 && n < shyyLast && shyyChk[shyyAct[n]] == tok {
+                       if len(expected) == cap(expected) {
+                               return res
+                       }
+                       expected = append(expected, tok)
+               }
+       }
+
+       if shyyDef[state] == -2 {
+               i := 0
+               for shyyExca[i] != -1 || shyyExca[i+1] != state {
+                       i += 2
+               }
+
+               // Look for tokens that we accept or reduce.
+               for i += 2; shyyExca[i] >= 0; i += 2 {
+                       tok := shyyExca[i]
+                       if tok < TOKSTART || shyyExca[i+1] == 0 {
+                               continue
+                       }
+                       if len(expected) == cap(expected) {
+                               return res
+                       }
+                       expected = append(expected, tok)
+               }
+
+               // If the default action is to accept or reduce, give up.
+               if shyyExca[i+1] != 0 {
+                       return res
+               }
+       }
+
+       for i, tok := range expected {
+               if i == 0 {
+                       res += ", expecting "
+               } else {
+                       res += " or "
+               }
+               res += shyyTokname(tok)
+       }
+       return res
+}
+
+func shyylex1(lex shyyLexer, lval *shyySymType) (char, token int) {
+       token = 0
+       char = lex.Lex(lval)
+       if char <= 0 {
+               token = shyyTok1[0]
+               goto out
+       }
+       if char < len(shyyTok1) {
+               token = shyyTok1[char]
+               goto out
+       }
+       if char >= shyyPrivate {
+               if char < shyyPrivate+len(shyyTok2) {
+                       token = shyyTok2[char-shyyPrivate]
+                       goto out
+               }
+       }
+       for i := 0; i < len(shyyTok3); i += 2 {
+               token = shyyTok3[i+0]
+               if token == char {
+                       token = shyyTok3[i+1]
+                       goto out
+               }
+       }
+
+out:
+       if token == 0 {
+               token = shyyTok2[1] /* unknown char */
+       }
+       if shyyDebug >= 3 {
+               __yyfmt__.Printf("lex %s(%d)\n", shyyTokname(token), uint(char))
+       }
+       return char, token
+}
+
+func shyyParse(shyylex shyyLexer) int {
+       return shyyNewParser().Parse(shyylex)
+}
+
+func (shyyrcvr *shyyParserImpl) Parse(shyylex shyyLexer) int {
+       var shyyn int
+       var shyyVAL shyySymType
+       var shyyDollar []shyySymType
+       _ = shyyDollar // silence set and not used
+       shyyS := shyyrcvr.stack[:]
+
+       Nerrs := 0   /* number of errors */
+       Errflag := 0 /* error recovery flag */
+       shyystate := 0
+       shyyrcvr.char = -1
+       shyytoken := -1 // shyyrcvr.char translated into internal numbering
+       defer func() {
+               // Make sure we report no lookahead when not parsing.
+               shyystate = -1
+               shyyrcvr.char = -1
+               shyytoken = -1
+       }()
+       shyyp := -1
+       goto shyystack
+
+ret0:
+       return 0
+
+ret1:
+       return 1
+
+shyystack:
+       /* put a state and value onto the stack */
+       if shyyDebug >= 4 {
+               __yyfmt__.Printf("char %v in %v\n", shyyTokname(shyytoken), shyyStatname(shyystate))
+       }
+
+       shyyp++
+       if shyyp >= len(shyyS) {
+               nyys := make([]shyySymType, len(shyyS)*2)
+               copy(nyys, shyyS)
+               shyyS = nyys
+       }
+       shyyS[shyyp] = shyyVAL
+       shyyS[shyyp].yys = shyystate
+
+shyynewstate:
+       shyyn = shyyPact[shyystate]
+       if shyyn <= shyyFlag {
+               goto shyydefault /* simple state */
+       }
+       if shyyrcvr.char < 0 {
+               shyyrcvr.char, shyytoken = shyylex1(shyylex, &shyyrcvr.lval)
+       }
+       shyyn += shyytoken
+       if shyyn < 0 || shyyn >= shyyLast {
+               goto shyydefault
+       }
+       shyyn = shyyAct[shyyn]
+       if shyyChk[shyyn] == shyytoken { /* valid shift */
+               shyyrcvr.char = -1
+               shyytoken = -1
+               shyyVAL = shyyrcvr.lval
+               shyystate = shyyn
+               if Errflag > 0 {
+                       Errflag--
+               }
+               goto shyystack
+       }
+
+shyydefault:
+       /* default state action */
+       shyyn = shyyDef[shyystate]
+       if shyyn == -2 {
+               if shyyrcvr.char < 0 {
+                       shyyrcvr.char, shyytoken = shyylex1(shyylex, &shyyrcvr.lval)
+               }
+
+               /* look through exception table */
+               xi := 0
+               for {
+                       if shyyExca[xi+0] == -1 && shyyExca[xi+1] == shyystate {
+                               break
+                       }
+                       xi += 2
+               }
+               for xi += 2; ; xi += 2 {
+                       shyyn = shyyExca[xi+0]
+                       if shyyn < 0 || shyyn == shyytoken {
+                               break
+                       }
+               }
+               shyyn = shyyExca[xi+1]
+               if shyyn < 0 {
+                       goto ret0
+               }
+       }
+       if shyyn == 0 {
+               /* error ... attempt to resume parsing */
+               switch Errflag {
+               case 0: /* brand new error */
+                       shyylex.Error(shyyErrorMessage(shyystate, shyytoken))
+                       Nerrs++
+                       if shyyDebug >= 1 {
+                               __yyfmt__.Printf("%s", shyyStatname(shyystate))
+                               __yyfmt__.Printf(" saw %s\n", shyyTokname(shyytoken))
+                       }
+                       fallthrough
+
+               case 1, 2: /* incompletely recovered error ... try again */
+                       Errflag = 3
+
+                       /* find a state where "error" is a legal shift action */
+                       for shyyp >= 0 {
+                               shyyn = shyyPact[shyyS[shyyp].yys] + shyyErrCode
+                               if shyyn >= 0 && shyyn < shyyLast {
+                                       shyystate = shyyAct[shyyn] /* simulate a shift of "error" */
+                                       if shyyChk[shyystate] == shyyErrCode {
+                                               goto shyystack
+                                       }
+                               }
+
+                               /* the current p has no shift on "error", pop stack */
+                               if shyyDebug >= 2 {
+                                       __yyfmt__.Printf("error recovery pops state %d\n", shyyS[shyyp].yys)
+                               }
+                               shyyp--
+                       }
+                       /* there is no state on the stack with an error shift ... abort */
+                       goto ret1
+
+               case 3: /* no shift yet; clobber input char */
+                       if shyyDebug >= 2 {
+                               __yyfmt__.Printf("error recovery discards %s\n", shyyTokname(shyytoken))
+                       }
+                       if shyytoken == shyyEofCode {
+                               goto ret1
+                       }
+                       shyyrcvr.char = -1
+                       shyytoken = -1
+                       goto shyynewstate /* try again in the same state */
+               }
+       }
+
+       /* reduction by production shyyn */
+       if shyyDebug >= 2 {
+               __yyfmt__.Printf("reduce %v in:\n\t%v\n", shyyn, shyyStatname(shyystate))
+       }
+
+       shyynt := shyyn
+       shyypt := shyyp
+       _ = shyypt // guard against "declared and not used"
+
+       shyyp -= shyyR2[shyyn]
+       // shyyp is now the index of $0. Perform the default action. Iff the
+       // reduced production is ε, $1 is possibly out of range.
+       if shyyp+1 >= len(shyyS) {
+               nyys := make([]shyySymType, len(shyyS)*2)
+               copy(nyys, shyyS)
+               shyyS = nyys
+       }
+       shyyVAL = shyyS[shyyp+1]
+
+       /* consult goto table to find next state */
+       shyyn = shyyR1[shyyn]
+       shyyg := shyyPgo[shyyn]
+       shyyj := shyyg + shyyS[shyyp].yys + 1
+
+       if shyyj >= shyyLast {
+               shyystate = shyyAct[shyyg]
+       } else {
+               shyystate = shyyAct[shyyj]
+               if shyyChk[shyystate] != -shyyn {
+                       shyystate = shyyAct[shyyg]
+               }
+       }
+       // dummy call; replaced with literal code
+       switch shyynt {
+
+       case 1:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:59
+               {
+                       shyylex.(*ShellLexer).result = shyyVAL.List
+               }
+       case 2:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:63
+               {
+                       shyyVAL.List = shyyDollar[1].List
+               }
+       case 3:
+               shyyDollar = shyyS[shyypt-0 : shyypt+1]
+               //line shell.y:66
+               {
+                       shyyVAL.List = &MkShList{}
+               }
+       case 4:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:70
+               {
+                       shyyVAL.AndOr = NewMkShAndOr(shyyDollar[1].Pipeline)
+               }
+       case 5:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:73
+               {
+                       shyyVAL.AndOr.Add("&&", shyyDollar[4].Pipeline)
+               }
+       case 6:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:76
+               {
+                       shyyVAL.AndOr.Add("||", shyyDollar[4].Pipeline)
+               }
+       case 7:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:80
+               {
+                       /* empty */
+               }
+       case 8:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:82
+               {
+                       shyyVAL.Pipeline = shyyDollar[2].Pipeline
+                       shyyVAL.Pipeline.Negated = true
+               }
+       case 9:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:87
+               {
+                       shyyVAL.Pipeline = NewMkShPipeline(false, shyyDollar[1].Command)
+               }
+       case 10:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:90
+               {
+                       shyyVAL.Pipeline.Add(shyyDollar[4].Command)
+               }
+       case 11:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:94
+               {
+                       shyyVAL.Command = &MkShCommand{Simple: shyyDollar[1].Simple}
+               }
+       case 12:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:97
+               {
+                       shyyVAL.Command = &MkShCommand{Compound: shyyDollar[1].CompoundCommand}
+               }
+       case 13:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:100
+               {
+                       shyyVAL.Command = &MkShCommand{Compound: shyyDollar[1].CompoundCommand, Redirects: shyyDollar[2].Redirections}
+               }
+       case 14:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:103
+               {
+                       shyyVAL.Command = &MkShCommand{FuncDef: shyyDollar[1].FuncDef}
+               }
+       case 15:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:106
+               {
+                       shyyVAL.Command = &MkShCommand{FuncDef: shyyDollar[1].FuncDef, Redirects: shyyDollar[2].Redirections}
+               }
+       case 16:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:110
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{Brace: shyyDollar[1].List}
+               }
+       case 17:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:113
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{Subshell: shyyDollar[1].List}
+               }
+       case 18:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:116
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{For: shyyDollar[1].For}
+               }
+       case 19:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:119
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{Case: shyyDollar[1].Case}
+               }
+       case 20:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:122
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{If: shyyDollar[1].If}
+               }
+       case 21:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:125
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{Loop: shyyDollar[1].Loop}
+               }
+       case 22:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:128
+               {
+                       shyyVAL.CompoundCommand = &MkShCompoundCommand{Loop: shyyDollar[1].Loop}
+               }
+       case 23:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:132
+               {
+                       shyyVAL.List = shyyDollar[2].List
+               }
+       case 24:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:136
+               {
+                       shyyVAL.List = shyyDollar[2].List
+               }
+       case 25:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:139
+               {
+                       shyyVAL.List = shyyDollar[2].List
+                       shyyVAL.List.AddSeparator(shyyDollar[3].Separator)
+               }
+       case 26:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:144
+               {
+                       shyyVAL.List = NewMkShList()
+                       shyyVAL.List.AddAndOr(shyyDollar[1].AndOr)
+               }
+       case 27:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:148
+               {
+                       shyyVAL.List.AddSeparator(shyyDollar[2].Separator)
+                       shyyVAL.List.AddAndOr(shyyDollar[3].AndOr)
+               }
+       case 28:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:153
+               {
+                       args := NewShToken("\"$$@\"",
+                               &ShAtom{shtWord, "\"", shqDquot, nil},
+                               &ShAtom{shtWord, "$$@", shqDquot, nil},
+                               &ShAtom{shtWord, "\"", shqPlain, nil})
+                       shyyVAL.For = &MkShForClause{shyyDollar[2].Word.MkText, []*ShToken{args}, shyyDollar[4].List}
+               }
+       case 29:
+               shyyDollar = shyyS[shyypt-6 : shyypt+1]
+               //line shell.y:160
+               {
+                       shyyVAL.For = &MkShForClause{shyyDollar[2].Word.MkText, nil, shyyDollar[6].List}
+               }
+       case 30:
+               shyyDollar = shyyS[shyypt-7 : shyypt+1]
+               //line shell.y:163
+               {
+                       shyyVAL.For = &MkShForClause{shyyDollar[2].Word.MkText, shyyDollar[5].Words, shyyDollar[7].List}
+               }
+       case 31:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:167
+               {
+                       shyyVAL.Words = append(shyyVAL.Words, shyyDollar[1].Word)
+               }
+       case 32:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:170
+               {
+                       shyyVAL.Words = append(shyyVAL.Words, shyyDollar[2].Word)
+               }
+       case 33:
+               shyyDollar = shyyS[shyypt-7 : shyypt+1]
+               //line shell.y:174
+               {
+                       shyyVAL.Case = shyyDollar[6].Case
+                       shyyVAL.Case.Word = shyyDollar[2].Word
+               }
+       case 34:
+               shyyDollar = shyyS[shyypt-7 : shyypt+1]
+               //line shell.y:178
+               {
+                       shyyVAL.Case = shyyDollar[6].Case
+                       shyyVAL.Case.Word = shyyDollar[2].Word
+               }
+       case 35:
+               shyyDollar = shyyS[shyypt-6 : shyypt+1]
+               //line shell.y:182
+               {
+                       shyyVAL.Case = &MkShCaseClause{shyyDollar[2].Word, nil}
+               }
+       case 36:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:186
+               {
+                       shyyVAL.Case = &MkShCaseClause{nil, nil}
+                       shyyVAL.Case.Cases = append(shyyVAL.Case.Cases, shyyDollar[1].CaseItem)
+               }
+       case 37:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:190
+               {
+                       shyyVAL.Case.Cases = append(shyyVAL.Case.Cases, shyyDollar[2].CaseItem)
+               }
+       case 38:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:194
+               {
+                       shyyVAL.Case = &MkShCaseClause{nil, nil}
+                       shyyVAL.Case.Cases = append(shyyVAL.Case.Cases, shyyDollar[1].CaseItem)
+               }
+       case 39:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:198
+               {
+                       shyyVAL.Case.Cases = append(shyyVAL.Case.Cases, shyyDollar[2].CaseItem)
+               }
+       case 40:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:202
+               {
+                       shyyVAL.Words = shyyDollar[2].Words
+               }
+       case 41:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:205
+               {
+                       /* empty */
+               }
+       case 42:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:208
+               {
+                       shyyVAL.CaseItem = &MkShCaseItem{shyyDollar[1].Words, &MkShList{}, sepNone}
+               }
+       case 43:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:211
+               {
+                       shyyVAL.CaseItem = &MkShCaseItem{shyyDollar[1].Words, shyyDollar[3].List, sepNone}
+               }
+       case 44:
+               shyyDollar = shyyS[shyypt-5 : shyypt+1]
+               //line shell.y:214
+               {
+                       shyyVAL.CaseItem = &MkShCaseItem{shyyDollar[1].Words, shyyDollar[3].List, shyyDollar[4].Separator}
+               }
+       case 45:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:218
+               {
+                       shyyVAL.CaseItem = &MkShCaseItem{shyyDollar[1].Words, &MkShList{}, sepNone}
+               }
+       case 46:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:221
+               {
+                       shyyVAL.CaseItem = &MkShCaseItem{shyyDollar[1].Words, shyyDollar[2].List, sepNone}
+               }
+       case 47:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:225
+               {
+                       shyyVAL.Words = nil
+                       shyyVAL.Words = append(shyyVAL.Words, shyyDollar[1].Word)
+               }
+       case 48:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:229
+               {
+                       shyyVAL.Words = append(shyyVAL.Words, shyyDollar[3].Word)
+               }
+       case 49:
+               shyyDollar = shyyS[shyypt-6 : shyypt+1]
+               //line shell.y:233
+               {
+                       shyyVAL.If = shyyDollar[5].If
+                       shyyVAL.If.Prepend(shyyDollar[2].List, shyyDollar[4].List)
+               }
+       case 50:
+               shyyDollar = shyyS[shyypt-5 : shyypt+1]
+               //line shell.y:237
+               {
+                       shyyVAL.If = &MkShIfClause{}
+                       shyyVAL.If.Prepend(shyyDollar[2].List, shyyDollar[4].List)
+               }
+       case 51:
+               shyyDollar = shyyS[shyypt-4 : shyypt+1]
+               //line shell.y:242
+               {
+                       shyyVAL.If = &MkShIfClause{}
+                       shyyVAL.If.Prepend(shyyDollar[2].List, shyyDollar[4].List)
+               }
+       case 52:
+               shyyDollar = shyyS[shyypt-5 : shyypt+1]
+               //line shell.y:246
+               {
+                       shyyVAL.If = shyyDollar[5].If
+                       shyyVAL.If.Prepend(shyyDollar[2].List, shyyDollar[4].List)
+               }
+       case 53:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:250
+               {
+                       shyyVAL.If = &MkShIfClause{nil, nil, shyyDollar[2].List}
+               }
+       case 54:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:254
+               {
+                       shyyVAL.Loop = &MkShLoopClause{shyyDollar[2].List, shyyDollar[3].List, false}
+               }
+       case 55:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:257
+               {
+                       shyyVAL.Loop = &MkShLoopClause{shyyDollar[2].List, shyyDollar[3].List, true}
+               }
+       case 56:
+               shyyDollar = shyyS[shyypt-5 : shyypt+1]
+               //line shell.y:261
+               { /* Apply rule 9 */
+                       shyyVAL.FuncDef = &MkShFunctionDefinition{shyyDollar[1].Word.MkText, shyyDollar[5].CompoundCommand}
+               }
+       case 57:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:264
+               {
+                       shyyVAL.List = shyyDollar[2].List
+               }
+       case 58:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:268
+               {
+                       shyyVAL.List = shyyDollar[2].List
+               }
+       case 59:
+               shyyDollar = shyyS[shyypt-3 : shyypt+1]
+               //line shell.y:272
+               {
+                       shyyVAL.Simple.Name = shyyDollar[2].Word
+                       shyyVAL.Simple.Args = append(shyyVAL.Simple.Args, shyyDollar[3].Simple.Args...)
+                       shyyVAL.Simple.Redirections = append(shyyVAL.Simple.Redirections, shyyDollar[3].Simple.Redirections...)
+               }
+       case 60:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:277
+               {
+                       shyyVAL.Simple.Name = shyyDollar[2].Word
+               }
+       case 61:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:280
+               {
+                       /* empty */
+               }
+       case 62:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:282
+               {
+                       shyyVAL.Simple = shyyDollar[2].Simple
+                       shyyVAL.Simple.Name = shyyDollar[1].Word
+               }
+       case 63:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:286
+               {
+                       shyyVAL.Simple = &MkShSimpleCommand{Name: shyyDollar[1].Word}
+               }
+       case 64:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:290
+               { /* Apply rule 7b */
+                       /* empty */
+               }
+       case 65:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:292
+               {
+                       shyyVAL.Simple = &MkShSimpleCommand{}
+                       shyyVAL.Simple.Redirections = append(shyyVAL.Simple.Redirections, shyyDollar[1].Redirection)
+               }
+       case 66:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:296
+               {
+                       shyyVAL.Simple = &MkShSimpleCommand{}
+                       shyyVAL.Simple.Assignments = append(shyyVAL.Simple.Assignments, shyyDollar[1].Word)
+               }
+       case 67:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:300
+               {
+                       shyyVAL.Simple.Redirections = append(shyyVAL.Simple.Redirections, shyyDollar[2].Redirection)
+               }
+       case 68:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:303
+               {
+                       shyyVAL.Simple.Assignments = append(shyyVAL.Simple.Assignments, shyyDollar[2].Word)
+               }
+       case 69:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:307
+               {
+                       shyyVAL.Simple = &MkShSimpleCommand{}
+                       shyyVAL.Simple.Redirections = append(shyyVAL.Simple.Redirections, shyyDollar[1].Redirection)
+               }
+       case 70:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:311
+               {
+                       shyyVAL.Simple = &MkShSimpleCommand{}
+                       shyyVAL.Simple.Args = append(shyyVAL.Simple.Args, shyyDollar[1].Word)
+               }
+       case 71:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:315
+               {
+                       shyyVAL.Simple.Redirections = append(shyyVAL.Simple.Redirections, shyyDollar[2].Redirection)
+               }
+       case 72:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:318
+               {
+                       shyyVAL.Simple.Args = append(shyyVAL.Simple.Args, shyyDollar[2].Word)
+               }
+       case 73:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:322
+               {
+                       shyyVAL.Redirections = nil
+                       shyyVAL.Redirections = append(shyyVAL.Redirections, shyyDollar[1].Redirection)
+               }
+       case 74:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:326
+               {
+                       shyyVAL.Redirections = append(shyyVAL.Redirections, shyyDollar[2].Redirection)
+               }
+       case 75:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:330
+               {
+                       /* empty */
+               }
+       case 76:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:332
+               {
+                       shyyVAL.Redirection = shyyDollar[2].Redirection
+                       shyyVAL.Redirection.Fd = shyyDollar[1].IONum
+               }
+       case 77:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:337
+               {
+                       /* empty */
+               }
+       case 78:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:339
+               {
+                       shyyVAL.Redirection = shyyDollar[2].Redirection
+                       shyyVAL.Redirection.Fd = shyyDollar[1].IONum
+               }
+       case 79:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:344
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, "<", shyyDollar[2].Word}
+               }
+       case 80:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:347
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, "<&", shyyDollar[2].Word}
+               }
+       case 81:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:350
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, ">", shyyDollar[2].Word}
+               }
+       case 82:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:353
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, ">&", shyyDollar[2].Word}
+               }
+       case 83:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:356
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, ">>", shyyDollar[2].Word}
+               }
+       case 84:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:359
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, "<>", shyyDollar[2].Word}
+               }
+       case 85:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:362
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, ">|", shyyDollar[2].Word}
+               }
+       case 86:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:366
+               { /* Apply rule 2 */
+                       /* empty */
+               }
+       case 87:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:368
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, "<<", shyyDollar[2].Word}
+               }
+       case 88:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:371
+               {
+                       shyyVAL.Redirection = &MkShRedirection{-1, "<<-", shyyDollar[2].Word}
+               }
+       case 89:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:375
+               { /* Apply rule 3 */
+                       /* empty */
+               }
+       case 90:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:377
+               {
+                       /* empty */
+               }
+       case 91:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:379
+               {
+                       /* empty */
+               }
+       case 92:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:382
+               {
+                       /* empty */
+               }
+       case 93:
+               shyyDollar = shyyS[shyypt-0 : shyypt+1]
+               //line shell.y:384
+               {
+                       /* empty */
+               }
+       case 94:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:387
+               {
+                       shyyVAL.Separator = sepBackground
+               }
+       case 95:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:390
+               {
+                       shyyVAL.Separator = sepSemicolon
+               }
+       case 96:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:394
+               {
+                       /* empty */
+               }
+       case 97:
+               shyyDollar = shyyS[shyypt-1 : shyypt+1]
+               //line shell.y:396
+               {
+                       shyyVAL.Separator = sepNewline
+               }
+       case 98:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:400
+               {
+                       shyyVAL.Separator = sepSemicolon
+               }
+       case 99:
+               shyyDollar = shyyS[shyypt-2 : shyypt+1]
+               //line shell.y:403
+               {
+                       shyyVAL.Separator = sepNewline
+               }
+       }
+       goto shyystack /* stack new state and value */
+}

Index: pkgsrc/pkgtools/pkglint/files/licenses/licensesyacc.go
diff -u /dev/null pkgsrc/pkgtools/pkglint/files/licenses/licensesyacc.go:1.1
--- /dev/null   Fri Mar 17 22:43:34 2017
+++ pkgsrc/pkgtools/pkglint/files/licenses/licensesyacc.go      Fri Mar 17 22:43:34 2017
@@ -0,0 +1,471 @@
+//line licenses.y:2
+package licenses
+
+import __yyfmt__ "fmt"
+
+//line licenses.y:2
+//line licenses.y:8
+type liyySymType struct {
+       yys  int
+       Node *Condition
+}
+
+const ltNAME = 57346
+const ltAND = 57347
+const ltOR = 57348
+const ltOPEN = 57349
+const ltCLOSE = 57350
+
+var liyyToknames = [...]string{
+       "$end",
+       "error",
+       "$unk",
+       "ltNAME",
+       "ltAND",
+       "ltOR",
+       "ltOPEN",
+       "ltCLOSE",
+}
+var liyyStatenames = [...]string{}
+
+const liyyEofCode = 1
+const liyyErrCode = 2
+const liyyInitialStackSize = 16
+
+//line yacctab:1
+var liyyExca = [...]int{
+       -1, 1,
+       1, -1,
+       -2, 0,
+}
+
+const liyyNprod = 7
+const liyyPrivate = 57344
+
+var liyyTokenNames []string
+var liyyStates []string
+
+const liyyLast = 15
+
+var liyyAct = [...]int{
+
+       6, 7, 3, 11, 4, 1, 0, 5, 2, 9,
+       10, 6, 7, 0, 8,
+}
+var liyyPact = [...]int{
+
+       0, -1000, 6, -1000, -1000, 0, 0, 0, -5, -1000,
+       -1000, -1000,
+}
+var liyyPgo = [...]int{
+
+       0, 5, 8, 2,
+}
+var liyyR1 = [...]int{
+
+       0, 1, 2, 2, 2, 3, 3,
+}
+var liyyR2 = [...]int{
+
+       0, 1, 1, 3, 3, 1, 3,
+}
+var liyyChk = [...]int{
+
+       -1000, -1, -2, -3, 4, 7, 5, 6, -2, -3,
+       -3, 8,
+}
+var liyyDef = [...]int{
+
+       0, -2, 1, 2, 5, 0, 0, 0, 0, 3,
+       4, 6,
+}
+var liyyTok1 = [...]int{
+
+       1,
+}
+var liyyTok2 = [...]int{
+
+       2, 3, 4, 5, 6, 7, 8,
+}
+var liyyTok3 = [...]int{
+       0,
+}
+
+var liyyErrorMessages = [...]struct {
+       state int
+       token int
+       msg   string
+}{}
+
+//line yaccpar:1
+
+/*     parser for yacc output  */
+
+var (
+       liyyDebug        = 0
+       liyyErrorVerbose = false
+)
+
+type liyyLexer interface {
+       Lex(lval *liyySymType) int
+       Error(s string)
+}
+
+type liyyParser interface {
+       Parse(liyyLexer) int
+       Lookahead() int
+}
+
+type liyyParserImpl struct {
+       lval  liyySymType
+       stack [liyyInitialStackSize]liyySymType
+       char  int
+}
+
+func (p *liyyParserImpl) Lookahead() int {
+       return p.char
+}
+
+func liyyNewParser() liyyParser {
+       return &liyyParserImpl{}
+}
+
+const liyyFlag = -1000
+
+func liyyTokname(c int) string {
+       if c >= 1 && c-1 < len(liyyToknames) {
+               if liyyToknames[c-1] != "" {
+                       return liyyToknames[c-1]
+               }
+       }
+       return __yyfmt__.Sprintf("tok-%v", c)
+}
+
+func liyyStatname(s int) string {
+       if s >= 0 && s < len(liyyStatenames) {
+               if liyyStatenames[s] != "" {
+                       return liyyStatenames[s]
+               }
+       }
+       return __yyfmt__.Sprintf("state-%v", s)
+}
+
+func liyyErrorMessage(state, lookAhead int) string {
+       const TOKSTART = 4
+
+       if !liyyErrorVerbose {
+               return "syntax error"
+       }
+
+       for _, e := range liyyErrorMessages {
+               if e.state == state && e.token == lookAhead {
+                       return "syntax error: " + e.msg
+               }
+       }
+
+       res := "syntax error: unexpected " + liyyTokname(lookAhead)
+
+       // To match Bison, suggest at most four expected tokens.
+       expected := make([]int, 0, 4)
+
+       // Look for shiftable tokens.
+       base := liyyPact[state]
+       for tok := TOKSTART; tok-1 < len(liyyToknames); tok++ {
+               if n := base + tok; n >= 0 && n < liyyLast && liyyChk[liyyAct[n]] == tok {
+                       if len(expected) == cap(expected) {
+                               return res
+                       }
+                       expected = append(expected, tok)
+               }
+       }
+
+       if liyyDef[state] == -2 {
+               i := 0
+               for liyyExca[i] != -1 || liyyExca[i+1] != state {
+                       i += 2
+               }
+
+               // Look for tokens that we accept or reduce.
+               for i += 2; liyyExca[i] >= 0; i += 2 {
+                       tok := liyyExca[i]
+                       if tok < TOKSTART || liyyExca[i+1] == 0 {
+                               continue
+                       }
+                       if len(expected) == cap(expected) {
+                               return res
+                       }
+                       expected = append(expected, tok)
+               }
+
+               // If the default action is to accept or reduce, give up.
+               if liyyExca[i+1] != 0 {
+                       return res
+               }
+       }
+
+       for i, tok := range expected {
+               if i == 0 {
+                       res += ", expecting "
+               } else {
+                       res += " or "
+               }
+               res += liyyTokname(tok)
+       }
+       return res
+}
+
+func liyylex1(lex liyyLexer, lval *liyySymType) (char, token int) {
+       token = 0
+       char = lex.Lex(lval)
+       if char <= 0 {
+               token = liyyTok1[0]
+               goto out
+       }
+       if char < len(liyyTok1) {
+               token = liyyTok1[char]
+               goto out
+       }
+       if char >= liyyPrivate {
+               if char < liyyPrivate+len(liyyTok2) {
+                       token = liyyTok2[char-liyyPrivate]
+                       goto out
+               }
+       }
+       for i := 0; i < len(liyyTok3); i += 2 {
+               token = liyyTok3[i+0]
+               if token == char {
+                       token = liyyTok3[i+1]
+                       goto out
+               }
+       }
+
+out:
+       if token == 0 {
+               token = liyyTok2[1] /* unknown char */
+       }
+       if liyyDebug >= 3 {
+               __yyfmt__.Printf("lex %s(%d)\n", liyyTokname(token), uint(char))
+       }
+       return char, token
+}
+
+func liyyParse(liyylex liyyLexer) int {
+       return liyyNewParser().Parse(liyylex)
+}
+
+func (liyyrcvr *liyyParserImpl) Parse(liyylex liyyLexer) int {
+       var liyyn int
+       var liyyVAL liyySymType
+       var liyyDollar []liyySymType
+       _ = liyyDollar // silence set and not used
+       liyyS := liyyrcvr.stack[:]
+
+       Nerrs := 0   /* number of errors */
+       Errflag := 0 /* error recovery flag */
+       liyystate := 0
+       liyyrcvr.char = -1
+       liyytoken := -1 // liyyrcvr.char translated into internal numbering
+       defer func() {
+               // Make sure we report no lookahead when not parsing.
+               liyystate = -1
+               liyyrcvr.char = -1
+               liyytoken = -1
+       }()
+       liyyp := -1
+       goto liyystack
+
+ret0:
+       return 0
+
+ret1:
+       return 1
+
+liyystack:
+       /* put a state and value onto the stack */
+       if liyyDebug >= 4 {
+               __yyfmt__.Printf("char %v in %v\n", liyyTokname(liyytoken), liyyStatname(liyystate))
+       }
+
+       liyyp++
+       if liyyp >= len(liyyS) {
+               nyys := make([]liyySymType, len(liyyS)*2)
+               copy(nyys, liyyS)
+               liyyS = nyys
+       }
+       liyyS[liyyp] = liyyVAL
+       liyyS[liyyp].yys = liyystate
+
+liyynewstate:
+       liyyn = liyyPact[liyystate]
+       if liyyn <= liyyFlag {
+               goto liyydefault /* simple state */
+       }
+       if liyyrcvr.char < 0 {
+               liyyrcvr.char, liyytoken = liyylex1(liyylex, &liyyrcvr.lval)
+       }
+       liyyn += liyytoken
+       if liyyn < 0 || liyyn >= liyyLast {
+               goto liyydefault
+       }
+       liyyn = liyyAct[liyyn]
+       if liyyChk[liyyn] == liyytoken { /* valid shift */
+               liyyrcvr.char = -1
+               liyytoken = -1
+               liyyVAL = liyyrcvr.lval
+               liyystate = liyyn
+               if Errflag > 0 {
+                       Errflag--
+               }
+               goto liyystack
+       }
+
+liyydefault:
+       /* default state action */
+       liyyn = liyyDef[liyystate]
+       if liyyn == -2 {
+               if liyyrcvr.char < 0 {
+                       liyyrcvr.char, liyytoken = liyylex1(liyylex, &liyyrcvr.lval)
+               }
+
+               /* look through exception table */
+               xi := 0
+               for {
+                       if liyyExca[xi+0] == -1 && liyyExca[xi+1] == liyystate {
+                               break
+                       }
+                       xi += 2
+               }
+               for xi += 2; ; xi += 2 {
+                       liyyn = liyyExca[xi+0]
+                       if liyyn < 0 || liyyn == liyytoken {
+                               break
+                       }
+               }
+               liyyn = liyyExca[xi+1]
+               if liyyn < 0 {
+                       goto ret0
+               }
+       }
+       if liyyn == 0 {
+               /* error ... attempt to resume parsing */
+               switch Errflag {
+               case 0: /* brand new error */
+                       liyylex.Error(liyyErrorMessage(liyystate, liyytoken))
+                       Nerrs++
+                       if liyyDebug >= 1 {
+                               __yyfmt__.Printf("%s", liyyStatname(liyystate))
+                               __yyfmt__.Printf(" saw %s\n", liyyTokname(liyytoken))
+                       }
+                       fallthrough
+
+               case 1, 2: /* incompletely recovered error ... try again */
+                       Errflag = 3
+
+                       /* find a state where "error" is a legal shift action */
+                       for liyyp >= 0 {
+                               liyyn = liyyPact[liyyS[liyyp].yys] + liyyErrCode
+                               if liyyn >= 0 && liyyn < liyyLast {
+                                       liyystate = liyyAct[liyyn] /* simulate a shift of "error" */
+                                       if liyyChk[liyystate] == liyyErrCode {
+                                               goto liyystack
+                                       }
+                               }
+
+                               /* the current p has no shift on "error", pop stack */
+                               if liyyDebug >= 2 {
+                                       __yyfmt__.Printf("error recovery pops state %d\n", liyyS[liyyp].yys)
+                               }
+                               liyyp--
+                       }
+                       /* there is no state on the stack with an error shift ... abort */
+                       goto ret1
+
+               case 3: /* no shift yet; clobber input char */
+                       if liyyDebug >= 2 {
+                               __yyfmt__.Printf("error recovery discards %s\n", liyyTokname(liyytoken))
+                       }
+                       if liyytoken == liyyEofCode {
+                               goto ret1
+                       }
+                       liyyrcvr.char = -1
+                       liyytoken = -1
+                       goto liyynewstate /* try again in the same state */
+               }
+       }
+
+       /* reduction by production liyyn */
+       if liyyDebug >= 2 {
+               __yyfmt__.Printf("reduce %v in:\n\t%v\n", liyyn, liyyStatname(liyystate))
+       }
+
+       liyynt := liyyn
+       liyypt := liyyp
+       _ = liyypt // guard against "declared and not used"
+
+       liyyp -= liyyR2[liyyn]
+       // liyyp is now the index of $0. Perform the default action. Iff the
+       // reduced production is ε, $1 is possibly out of range.
+       if liyyp+1 >= len(liyyS) {
+               nyys := make([]liyySymType, len(liyyS)*2)
+               copy(nyys, liyyS)
+               liyyS = nyys
+       }
+       liyyVAL = liyyS[liyyp+1]
+
+       /* consult goto table to find next state */
+       liyyn = liyyR1[liyyn]
+       liyyg := liyyPgo[liyyn]
+       liyyj := liyyg + liyyS[liyyp].yys + 1
+
+       if liyyj >= liyyLast {
+               liyystate = liyyAct[liyyg]
+       } else {
+               liyystate = liyyAct[liyyj]
+               if liyyChk[liyystate] != -liyyn {
+                       liyystate = liyyAct[liyyg]
+               }
+       }
+       // dummy call; replaced with literal code
+       switch liyynt {
+
+       case 1:
+               liyyDollar = liyyS[liyypt-1 : liyypt+1]
+               //line licenses.y:16
+               {
+                       liyylex.(*licenseLexer).result = liyyVAL.Node
+               }
+       case 2:
+               liyyDollar = liyyS[liyypt-1 : liyypt+1]
+               //line licenses.y:20
+               {
+                       liyyVAL.Node = &Condition{Children: []*Condition{liyyDollar[1].Node}}
+               }
+       case 3:
+               liyyDollar = liyyS[liyypt-3 : liyypt+1]
+               //line licenses.y:23
+               {
+                       liyyVAL.Node.Children = append(liyyVAL.Node.Children, liyyDollar[3].Node)
+                       liyyVAL.Node.And = true
+               }
+       case 4:
+               liyyDollar = liyyS[liyypt-3 : liyypt+1]
+               //line licenses.y:27
+               {
+                       liyyVAL.Node.Children = append(liyyVAL.Node.Children, liyyDollar[3].Node)
+                       liyyVAL.Node.Or = true
+               }
+       case 5:
+               liyyDollar = liyyS[liyypt-1 : liyypt+1]
+               //line licenses.y:32
+               {
+                       liyyVAL.Node = liyyDollar[1].Node
+               }
+       case 6:
+               liyyDollar = liyyS[liyypt-3 : liyypt+1]
+               //line licenses.y:35
+               {
+                       liyyVAL.Node = &Condition{Paren: liyyDollar[2].Node}
+               }
+       }
+       goto liyystack /* stack new state and value */
+}



Home | Main Index | Thread Index | Old Index