(end byte)
| 278 | } |
| 279 | |
| 280 | func (t *tokenizer) parseAsciiString(end byte) (err error) { |
| 281 | if end == '\\' { |
| 282 | panic(fmt.Errorf("`\\` cannot be the end of ascii string")) |
| 283 | } |
| 284 | var c byte |
| 285 | for { |
| 286 | c, err = t.reader.ReadByte() |
| 287 | switch { |
| 288 | case err != nil: |
| 289 | if err == io.EOF { |
| 290 | t.broken = true |
| 291 | t.emitWord() |
| 292 | } |
| 293 | return |
| 294 | case c == end: |
| 295 | return |
| 296 | case c == '\\': |
| 297 | err = t.parseAsciiChar() |
| 298 | if err != nil { |
| 299 | return |
| 300 | } |
| 301 | default: |
| 302 | t.builder.WriteByte(c) |
| 303 | } |
| 304 | } |
| 305 | } |
| 306 | |
| 307 | func (t *tokenizer) parseAsciiChar() (err error) { |
| 308 | b, err := t.reader.ReadByte() |
no test coverage detected