From eea6b0d8d5b060e5114beb173efa6aba3a9e0577 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 3 Sep 2009 10:53:27 -0700 Subject: [PATCH] simplify extractEBNF code R=rsc DELTA=15 (3 added, 2 deleted, 10 changed) OCL=34307 CL=34314 --- src/cmd/ebnflint/ebnflint.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/cmd/ebnflint/ebnflint.go b/src/cmd/ebnflint/ebnflint.go index 253f286d16..f6374214bd 100644 --- a/src/cmd/ebnflint/ebnflint.go +++ b/src/cmd/ebnflint/ebnflint.go @@ -38,33 +38,34 @@ var ( func extractEBNF(src []byte) []byte { var buf bytes.Buffer; - for i, j, n := 0, 0, len(src); ; { - // i = beginning of EBNF section - i = bytes.Index(src[j : n], open); + for { + // i = beginning of EBNF text + i := bytes.Index(src, open); if i < 0 { - break; + break; // no EBNF found - we are done } - i += j+len(open); + 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[j : i] { + for _, ch := range src[0 : i] { if ch == '\n' { buf.WriteByte('\n'); } } - // j = end of EBNF section - j = bytes.Index(src[i : n], close); + // j = end of EBNF text (or end of source) + j := bytes.Index(src[i : len(src)], close); // close marker if j < 0 { - // missing closing - // TODO(gri) should this be an error? - j = n-i; + j = len(src)-i; } j += i; - // copy EBNF section + // copy EBNF text buf.Write(src[i : j]); + + // advance + src = src[j : len(src)]; } return buf.Data();