diff options
author | Russ Cox <rsc@golang.org> | 2012-12-22 16:45:35 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2012-12-22 16:45:35 -0500 |
commit | 5eb1eeef062ead3f1764a0d91f184328e1972fe3 (patch) | |
tree | 67c016c249bc11ab38ea025a0dfea5fbd480f281 /src/cmd/yacc | |
parent | 05e794ec3323b0fbf8cb13b65e12bdb029581402 (diff) | |
download | go-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.y | 5 | ||||
-rw-r--r-- | 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 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) |