2 Commits

Author SHA1 Message Date
amery f7ea8d4a0b build-sys: use local asciigoat.org/core [DO-NOT-MERGE]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-31 00:36:55 +00:00
amery f6b0165957 parser: add initial Parser emitting non-whitespace tokens
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-31 00:34:45 +00:00
2 changed files with 8 additions and 7 deletions
+5 -4
View File
@@ -15,12 +15,13 @@ func (p *Parser) lexStart() (lexer.StateFn, error) {
r, _, err := p.src.ReadRune()
switch {
case err != nil:
err = p.emitError("", err)
return nil, err
return p.emitError("", err)
case IsNewLine(r):
p.lexNewLine(r)
// new line
p.lexMoreNewLine(r)
p.stepLine()
case IsSpace(r):
// whitespace
p.stepRune()
default:
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'
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) error {
func (p *Parser) emitError(content string, err error) (lexer.StateFn, error) {
err2 := p.OnError(p.pos, content, err)
switch {
case err2 != nil:
// return wrapped error
return err2
return nil, err2
default:
// return original error
return err
return nil, err
}
}