30 lines
395 B
Go
30 lines
395 B
Go
package token
|
|
|
|
type TokenStream struct {
|
|
ts []Token
|
|
out chan Token
|
|
}
|
|
|
|
func NewTokenStream(toks []Token) *TokenStream {
|
|
stream := &TokenStream{
|
|
ts: toks,
|
|
out: make(chan Token),
|
|
}
|
|
|
|
go stream.run()
|
|
|
|
return stream
|
|
}
|
|
|
|
func (s *TokenStream) run() {
|
|
for _, tok := range s.ts {
|
|
s.out <- tok
|
|
}
|
|
s.out <- TOKEN_EOS
|
|
close(s.out)
|
|
}
|
|
|
|
func (s *TokenStream) Out() chan Token {
|
|
return s.out
|
|
}
|