()
| 58 | } |
| 59 | |
| 60 | func (l *Lexer) Next() (Token, error) { |
| 61 | for l.state != nil && l.err == nil && l.tokens.Len() == 0 { |
| 62 | l.state = l.state(l) |
| 63 | } |
| 64 | if l.err != nil { |
| 65 | return Token{}, l.err.Bind(l.source) |
| 66 | } |
| 67 | if t, ok := l.tokens.Dequeue(); ok { |
| 68 | return t, nil |
| 69 | } |
| 70 | return Token{}, io.EOF |
| 71 | } |
| 72 | |
| 73 | const eof rune = -1 |
| 74 |