diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-07-16 06:54:42 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-07-16 06:54:42 +0000 |
commit | be47d6eceffd2c5dbbc1566d5eea490527fb2bd4 (patch) | |
tree | 0e8fda573576bb4181dba29d0e88380a8c38fafd /libgo/go/exp/ebnflint/ebnflint.go | |
parent | efb30cdeb003fd7c585ee0d7657340086abcbd9e (diff) | |
download | gcc-be47d6eceffd2c5dbbc1566d5eea490527fb2bd4.zip gcc-be47d6eceffd2c5dbbc1566d5eea490527fb2bd4.tar.gz gcc-be47d6eceffd2c5dbbc1566d5eea490527fb2bd4.tar.bz2 |
libgo: Update to Go 1.1.1.
From-SVN: r200974
Diffstat (limited to 'libgo/go/exp/ebnflint/ebnflint.go')
-rw-r--r-- | libgo/go/exp/ebnflint/ebnflint.go | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/libgo/go/exp/ebnflint/ebnflint.go b/libgo/go/exp/ebnflint/ebnflint.go deleted file mode 100644 index d54fb22..0000000 --- a/libgo/go/exp/ebnflint/ebnflint.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "bytes" - "exp/ebnf" - "flag" - "fmt" - "go/scanner" - "go/token" - "io" - "io/ioutil" - "os" - "path/filepath" -) - -var fset = token.NewFileSet() -var start = flag.String("start", "Start", "name of start production") - -func usage() { - fmt.Fprintf(os.Stderr, "usage: go tool ebnflint [flags] [filename]\n") - flag.PrintDefaults() - os.Exit(1) -} - -// Markers around EBNF sections in .html files -var ( - open = []byte(`<pre class="ebnf">`) - close = []byte(`</pre>`) -) - -func report(err error) { - scanner.PrintError(os.Stderr, err) - os.Exit(1) -} - -func extractEBNF(src []byte) []byte { - var buf bytes.Buffer - - for { - // i = beginning of EBNF text - i := bytes.Index(src, open) - if i < 0 { - break // no EBNF found - we are done - } - i += len(open) - - // write as many newlines as found in the excluded text - // to maintain correct line numbers in error messages - for _, ch := range src[0:i] { - if ch == '\n' { - buf.WriteByte('\n') - } - } - - // j = end of EBNF text (or end of source) - j := bytes.Index(src[i:], close) // close marker - if j < 0 { - j = len(src) - i - } - j += i - - // copy EBNF text - buf.Write(src[i:j]) - - // advance - src = src[j:] - } - - return buf.Bytes() -} - -func main() { - flag.Parse() - - var ( - name string - r io.Reader - ) - switch flag.NArg() { - case 0: - name, r = "<stdin>", os.Stdin - case 1: - name = flag.Arg(0) - default: - usage() - } - - if err := verify(name, *start, r); err != nil { - report(err) - } -} - -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 - } - - src, err := ioutil.ReadAll(r) - if err != nil { - return 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) -} |