Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f7ea8d4a0b | |||
| f6b0165957 |
+5
-4
@@ -15,12 +15,13 @@ func (p *Parser) lexStart() (lexer.StateFn, error) {
|
|||||||
r, _, err := p.src.ReadRune()
|
r, _, err := p.src.ReadRune()
|
||||||
switch {
|
switch {
|
||||||
case err != nil:
|
case err != nil:
|
||||||
err = p.emitError("", err)
|
return p.emitError("", err)
|
||||||
return nil, err
|
|
||||||
case IsNewLine(r):
|
case IsNewLine(r):
|
||||||
p.lexNewLine(r)
|
// new line
|
||||||
|
p.lexMoreNewLine(r)
|
||||||
p.stepLine()
|
p.stepLine()
|
||||||
case IsSpace(r):
|
case IsSpace(r):
|
||||||
|
// whitespace
|
||||||
p.stepRune()
|
p.stepRune()
|
||||||
default:
|
default:
|
||||||
p.src.UnreadRune()
|
p.src.UnreadRune()
|
||||||
@@ -29,7 +30,7 @@ func (p *Parser) lexStart() (lexer.StateFn, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) lexNewLine(r1 rune) {
|
func (p *Parser) lexMoreNewLine(r1 rune) {
|
||||||
// r1 is warrantied to be either '\r' or '\n'
|
// r1 is warrantied to be either '\r' or '\n'
|
||||||
r2, _, err := p.src.ReadRune()
|
r2, _, err := p.src.ReadRune()
|
||||||
switch r1 {
|
switch r1 {
|
||||||
|
|||||||
+3
-3
@@ -60,15 +60,15 @@ func (p *Parser) emitString(typ TokenType) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Parser) emitError(content string, err error) error {
|
func (p *Parser) emitError(content string, err error) (lexer.StateFn, error) {
|
||||||
err2 := p.OnError(p.pos, content, err)
|
err2 := p.OnError(p.pos, content, err)
|
||||||
switch {
|
switch {
|
||||||
case err2 != nil:
|
case err2 != nil:
|
||||||
// return wrapped error
|
// return wrapped error
|
||||||
return err2
|
return nil, err2
|
||||||
default:
|
default:
|
||||||
// return original error
|
// return original error
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user