mirror of
https://github.com/golang/go
synced 2024-11-12 09:50:21 -07:00
simplify extractEBNF code
R=rsc DELTA=15 (3 added, 2 deleted, 10 changed) OCL=34307 CL=34314
This commit is contained in:
parent
d3ffc5e683
commit
eea6b0d8d5
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user