From b3bb4bd2925bc6715e5c91175021a2386f4017bb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sat, 22 Dec 2012 16:45:35 -0500 Subject: [PATCH] cmd/yacc: fix debug print of token name The array skips the first TOKSTART entries. Fixes #4410. R=golang-dev, ken2, ken CC=golang-dev https://golang.org/cl/6999054 --- src/cmd/yacc/units.y | 5 +++++ src/cmd/yacc/yacc.go | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/cmd/yacc/units.y b/src/cmd/yacc/units.y index 00ccaf2ece..9c1b0b3364 100644 --- a/src/cmd/yacc/units.y +++ b/src/cmd/yacc/units.y @@ -11,6 +11,11 @@ %{ +// This tag will end up in the generated y.go, so that forgetting +// 'make clean' does not fail the next build. + +// +build ignore + // units.y // example of a Go yacc program // usage is diff --git a/src/cmd/yacc/yacc.go b/src/cmd/yacc/yacc.go index 62655e7cd2..0c18f93b6c 100644 --- a/src/cmd/yacc/yacc.go +++ b/src/cmd/yacc/yacc.go @@ -3228,9 +3228,10 @@ type $$Lexer interface { const $$Flag = -1000 func $$Tokname(c int) string { - if c > 0 && c <= len($$Toknames) { - if $$Toknames[c-1] != "" { - return $$Toknames[c-1] + // 4 is TOKSTART above + if c >= 4 && c-4 < len($$Toknames) { + if $$Toknames[c-4] != "" { + return $$Toknames[c-4] } } return __yyfmt__.Sprintf("tok-%v", c) -- 2.48.1