summaryrefslogtreecommitdiff
path: root/src/cmd/yacc
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2012-12-22 16:45:35 -0500
committerRuss Cox <rsc@golang.org>2012-12-22 16:45:35 -0500
commit5eb1eeef062ead3f1764a0d91f184328e1972fe3 (patch)
tree67c016c249bc11ab38ea025a0dfea5fbd480f281 /src/cmd/yacc
parent05e794ec3323b0fbf8cb13b65e12bdb029581402 (diff)
downloadgo-5eb1eeef062ead3f1764a0d91f184328e1972fe3.tar.gz
cmd/yacc: fix debug print of token name
The array skips the first TOKSTART entries. Fixes issue 4410. R=golang-dev, ken2, ken CC=golang-dev https://codereview.appspot.com/6999054
Diffstat (limited to 'src/cmd/yacc')
-rw-r--r--src/cmd/yacc/units.y5
-rw-r--r--src/cmd/yacc/yacc.go7
2 files changed, 9 insertions, 3 deletions
diff --git a/src/cmd/yacc/units.y b/src/cmd/yacc/units.y
index 00ccaf2ec..9c1b0b336 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 62655e7cd..0c18f93b6 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)