Commit 26ba3566 authored by Shenghou Ma's avatar Shenghou Ma Committed by Rob Pike

goyacc: fix units.y build breakage

This breakage is mainly due to API changes in pkg.
(e.g., package utf8 moved to unicode/utf8;
       remove of strconv.Atof64;
       change character type from int to rune.)
Also correct the usage comment.

This fixes issue 2646.
PS: I don't change the goyacc.go, because I think token type
    should not be force to rune.

R=golang-dev, adg, rogpeppe, r, r
CC=golang-dev
https://golang.org/cl/5502093
parent 94ff311d
......@@ -14,7 +14,7 @@
// units.y
// example of a goyacc program
// usage is
// goyacc units.y (produces y.go)
// goyacc -p "units_" units.y (produces y.go)
// 6g y.go
// 6l y.6
// ./6.out $GOROOT/src/cmd/goyacc/units
......@@ -33,7 +33,7 @@ import (
"os"
"math"
"strconv"
"utf8"
"unicode/utf8"
)
const (
......@@ -58,7 +58,7 @@ var lineno int // current input line number
var linep int // index to next rune in unput
var nerrors int // error count
var one Node // constant one
var peekrune int // backup runt from input
var peekrune rune // backup runt from input
var retnode1 Node
var retnode2 Node
var retnode Node
......@@ -212,7 +212,8 @@ expr0:
type UnitsLex int
func (UnitsLex) Lex(yylval *units_SymType) int {
var c, i int
var c rune
var i int
c = peekrune
peekrune = ' '
......@@ -242,7 +243,7 @@ loop:
yylval.numb = 3
return SUP
}
return c
return int(c)
alpha:
sym = ""
......@@ -267,7 +268,7 @@ numb:
}
}
peekrune = c
f, err := strconv.Atof64(sym)
f, err := strconv.ParseFloat(sym, 64)
if err != nil {
fmt.Printf("error converting %v\n", sym)
f = 0
......@@ -362,7 +363,7 @@ func main() {
* all characters that have some
* meaning. rest are usable as names
*/
func ralpha(c int) bool {
func ralpha(c rune) bool {
switch c {
case 0, '+', '-', '*', '/', '[', ']', '(', ')',
'^', ':', '?', ' ', '\t', '.', '|', '#',
......@@ -375,7 +376,7 @@ func ralpha(c int) bool {
/*
* number forming character
*/
func rdigit(c int) bool {
func rdigit(c rune) bool {
switch c {
case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'.', 'e', '+', '-':
......@@ -577,8 +578,9 @@ func readline() bool {
return false
}
func getrune() int {
var c, n int
func getrune() rune {
var c rune
var n int
if linep >= len(line) {
return 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment