2 Commits

Author SHA1 Message Date
amery ee2e5c2001 build-sys: use local asciigoat.org/core [DO-NOT-MERGE]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-31 00:19:16 +00:00
amery 330d885a60 parser: add initial Parser emitting non-whitespace tokens
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-31 00:18:36 +00:00
2 changed files with 7 additions and 8 deletions
+4 -5
View File
@@ -15,13 +15,12 @@ func (p *Parser) lexStart() (lexer.StateFn, error) {
r, _, err := p.src.ReadRune()
switch {
case err != nil:
return p.emitError("", err)
err = p.emitError("", err)
return nil, err
case IsNewLine(r):
// new line
p.lexMoreNewLine(r)
p.lexNewLine(r)
p.stepLine()
case IsSpace(r):
// whitespace
p.stepRune()
default:
p.src.UnreadRune()
@@ -30,7 +29,7 @@ func (p *Parser) lexStart() (lexer.StateFn, error) {
}
}
func (p *Parser) lexMoreNewLine(r1 rune) {
func (p *Parser) lexNewLine(r1 rune) {
// r1 is warrantied to be either '\r' or '\n'
r2, _, err := p.src.ReadRune()
switch r1 {
+3 -3
View File
@@ -60,15 +60,15 @@ func (p *Parser) emitString(typ TokenType) error {
return err
}
func (p *Parser) emitError(content string, err error) (lexer.StateFn, error) {
func (p *Parser) emitError(content string, err error) error {
err2 := p.OnError(p.pos, content, err)
switch {
case err2 != nil:
// return wrapped error
return nil, err2
return err2
default:
// return original error
return nil, err
return err
}
}