From f89d021bbe134e3efa0d015a41e9712960cdd009 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sun, 6 Nov 2022 21:31:46 +0900 Subject: Import source code of lexer generator From: https://github.com/nihei9/maleeni --- driver/token_stream.go | 61 -------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 driver/token_stream.go (limited to 'driver/token_stream.go') diff --git a/driver/token_stream.go b/driver/token_stream.go deleted file mode 100644 index eaf56c6..0000000 --- a/driver/token_stream.go +++ /dev/null @@ -1,61 +0,0 @@ -package driver - -import ( - "io" - - mldriver "github.com/nihei9/maleeni/driver" - spec "github.com/nihei9/vartan/spec/grammar" -) - -type vToken struct { - terminalID int - tok *mldriver.Token -} - -func (t *vToken) TerminalID() int { - return t.terminalID -} - -func (t *vToken) Lexeme() []byte { - return t.tok.Lexeme -} - -func (t *vToken) EOF() bool { - return t.tok.EOF -} - -func (t *vToken) Invalid() bool { - return t.tok.Invalid -} - -func (t *vToken) Position() (int, int) { - return t.tok.Row, t.tok.Col -} - -type tokenStream struct { - lex *mldriver.Lexer - kindToTerminal []int -} - -func NewTokenStream(g *spec.CompiledGrammar, src io.Reader) (TokenStream, error) { - lex, err := mldriver.NewLexer(mldriver.NewLexSpec(g.LexicalSpecification.Maleeni.Spec), src) - if err != nil { - return nil, err - } - - return &tokenStream{ - lex: lex, - kindToTerminal: g.LexicalSpecification.Maleeni.KindToTerminal, - }, nil -} - -func (l *tokenStream) Next() (VToken, error) { - tok, err := l.lex.Next() - if err != nil { - return nil, err - } - return &vToken{ - terminalID: l.kindToTerminal[tok.KindID], - tok: tok, - }, nil -} -- cgit v1.2.3