Added token struct
This commit is contained in:
parent
c3a5b15049
commit
68a6bdf511
56
lexer/token.go
Normal file
56
lexer/token.go
Normal file
@ -0,0 +1,56 @@
|
||||
package lexer
|
||||
|
||||
import (
|
||||
"github.com/sashakoshka/arf/file"
|
||||
)
|
||||
|
||||
// TokenKind is an enum represzenting what role a token has.
|
||||
type TokenKind int
|
||||
|
||||
const (
|
||||
TokenKindNewline TokenKind = iota
|
||||
TokenKindIndent
|
||||
|
||||
TokenKindSeparator
|
||||
TokenKindPermission
|
||||
|
||||
TokenKindInt
|
||||
TokenKindFloat
|
||||
TokenKindString
|
||||
TokenKindRune
|
||||
|
||||
TokenKindName
|
||||
TokenKindSymbol
|
||||
|
||||
TokenKindColon
|
||||
TokenKindDot
|
||||
|
||||
TokenKindLBracket
|
||||
TokenKindRBracket
|
||||
TokenKindLBrace
|
||||
TokenKindRBrace
|
||||
)
|
||||
|
||||
// Token represents a single token. It holds its location in the file, as well
|
||||
// as a value and some semantic information defining the token's role.
|
||||
type Token struct {
|
||||
kind TokenKind
|
||||
location file.Location
|
||||
value any
|
||||
}
|
||||
|
||||
// Kind returns the semantic role of the token.
|
||||
func (token Token) Kind () (kind TokenKind) {
|
||||
return token.kind
|
||||
}
|
||||
|
||||
// Value returns the value of the token. Depending on what kind of token it is,
|
||||
// this value may be nil.
|
||||
func (token Token) Value () (value any) {
|
||||
return token.value
|
||||
}
|
||||
|
||||
// Location returns the location of the token in its file.
|
||||
func (token Token) Location () (location file.Location) {
|
||||
return token.location
|
||||
}
|
Reference in New Issue
Block a user