From: Rob Pike Date: Fri, 7 Sep 2012 16:31:51 +0000 (-0700) Subject: cmd/yacc: allow leading underscore in token name X-Git-Tag: go1.1rc2~2511 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=cbc9ab75cb0da5c5848fd495ef2a2ff87f345735;p=gostls13.git cmd/yacc: allow leading underscore in token name Fixes #4037. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/6488093 --- diff --git a/src/cmd/yacc/units.y b/src/cmd/yacc/units.y index eaa3fb18a4..32d37e5039 100644 --- a/src/cmd/yacc/units.y +++ b/src/cmd/yacc/units.y @@ -78,7 +78,7 @@ var vflag bool %token VAL %token VAR -%token SUP +%token _SUP // tests leading underscore in token name %% prog: ':' VAR expr @@ -159,7 +159,7 @@ expr3: expr2: expr1 -| expr2 SUP +| expr2 _SUP { xpn(&$$, &$1, $2) } @@ -236,13 +236,13 @@ loop: return '/' case '¹', 'ⁱ': yylval.numb = 1 - return SUP + return _SUP case '²', '⁲': yylval.numb = 2 - return SUP + return _SUP case '³', '⁳': yylval.numb = 3 - return SUP + return _SUP } return int(c) diff --git a/src/cmd/yacc/yacc.go b/src/cmd/yacc/yacc.go index cca5570fb8..a4ae35349a 100644 --- a/src/cmd/yacc/yacc.go +++ b/src/cmd/yacc/yacc.go @@ -988,7 +988,7 @@ func gettok() int { func getword(c rune) { tokname = "" - for isword(c) || isdigit(c) || c == '_' || c == '.' || c == '$' { + for isword(c) || isdigit(c) || c == '.' || c == '$' { tokname += string(c) c = getrune(finput) } @@ -1338,7 +1338,7 @@ loop: if j >= max { errorf("Illegal use of $%v", j) } - } else if isword(c) || c == '_' || c == '.' { + } else if isword(c) || c == '.' { // look for $name ungetrune(finput, c) if gettok() != IDENTIFIER { @@ -3090,7 +3090,7 @@ var peekrune rune func isdigit(c rune) bool { return c >= '0' && c <= '9' } func isword(c rune) bool { - return c >= 0xa0 || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') + return c >= 0xa0 || c == '_' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') } func mktemp(t string) string { return t }