package token
|
|
|
|
import "fmt"
|
|
|
|
type Token struct {
|
|
ColumnEnd int
|
|
LineEnd int
|
|
ID TokenID
|
|
Literal string
|
|
ColumnStart int
|
|
LineStart int
|
|
}
|
|
|
|
func (token *Token) String() string {
|
|
return TokenNames[token.ID]
|
|
}
|
|
|
|
func (token *Token) Start() []int {
|
|
return []int{token.LineStart, token.ColumnStart}
|
|
}
|
|
|
|
func (token *Token) End() []int {
|
|
return []int{token.LineEnd, token.ColumnEnd}
|
|
}
|
|
|
|
func (token *Token) IsLiteral(literal string) bool {
|
|
return token.ID == NAME && token.Literal == literal
|
|
}
|
|
|
|
func (token *Token) Repr() string {
|
|
return fmt.Sprintf(
|
|
"Token{ID: %#v, Literal: %#v, LineStart: %#v, ColumnStart: %#v, LineEnd: %#v, ColumnEnd: %#v}",
|
|
token.ID,
|
|
token.Literal,
|
|
token.LineStart,
|
|
token.ColumnStart,
|
|
token.LineEnd,
|
|
token.ColumnEnd,
|
|
)
|
|
}
|