aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/exp/ebnflint/ebnflint.go
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2012-02-01 19:26:59 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2012-02-01 19:26:59 +0000
commit9af4cb9545ce481b8d9d4a13acfe26512032e21b (patch)
tree7e7e6083ebe59999943a211a17f8ef6f07f17c2f /libgo/go/exp/ebnflint/ebnflint.go
parent6b6cd722f329a168f98d1f421834cf40bb33a77d (diff)
downloadgcc-9af4cb9545ce481b8d9d4a13acfe26512032e21b.zip
gcc-9af4cb9545ce481b8d9d4a13acfe26512032e21b.tar.gz
gcc-9af4cb9545ce481b8d9d4a13acfe26512032e21b.tar.bz2
libgo: Update to weekly.2012-01-27.
From-SVN: r183810
Diffstat (limited to 'libgo/go/exp/ebnflint/ebnflint.go')
-rw-r--r--libgo/go/exp/ebnflint/ebnflint.go41
1 files changed, 27 insertions, 14 deletions
diff --git a/libgo/go/exp/ebnflint/ebnflint.go b/libgo/go/exp/ebnflint/ebnflint.go
index 6d6f516..2cb5aa6 100644
--- a/libgo/go/exp/ebnflint/ebnflint.go
+++ b/libgo/go/exp/ebnflint/ebnflint.go
@@ -11,6 +11,7 @@ import (
"fmt"
"go/scanner"
"go/token"
+ "io"
"io/ioutil"
"os"
"path/filepath"
@@ -76,34 +77,46 @@ func main() {
flag.Parse()
var (
- filename string
- src []byte
- err error
+ name string
+ r io.Reader
)
switch flag.NArg() {
case 0:
- filename = "<stdin>"
- src, err = ioutil.ReadAll(os.Stdin)
+ name, r = "<stdin>", os.Stdin
case 1:
- filename = flag.Arg(0)
- src, err = ioutil.ReadFile(filename)
+ name = flag.Arg(0)
default:
usage()
}
- if err != nil {
+
+ if err := verify(name, *start, r); err != nil {
report(err)
}
+}
- if filepath.Ext(filename) == ".html" || bytes.Index(src, open) >= 0 {
- src = extractEBNF(src)
+func verify(name, start string, r io.Reader) error {
+ if r == nil {
+ f, err := os.Open(name)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ r = f
}
- grammar, err := ebnf.Parse(filename, bytes.NewBuffer(src))
+ src, err := ioutil.ReadAll(r)
if err != nil {
- report(err)
+ return err
}
- if err = ebnf.Verify(grammar, *start); err != nil {
- report(err)
+ if filepath.Ext(name) == ".html" || bytes.Index(src, open) >= 0 {
+ src = extractEBNF(src)
+ }
+
+ grammar, err := ebnf.Parse(name, bytes.NewBuffer(src))
+ if err != nil {
+ return err
}
+
+ return ebnf.Verify(grammar, start)
}