blob: d50eb36868a8df6c17e639fb54375146bd0b5d12 [file] [log] [blame]
package token
import "fmt"
// Type represents the type of a lexical token.
type Type int
const (
Number Type = iota // numeric literal
Plus // +
Minus // -
Star // *
Slash // /
LParen // (
RParen // )
EOF // end of input
)
// String returns a human-readable name for the token type.
func (t Type) String() string {
switch t {
case Number:
return "Number"
case Plus:
return "+"
case Minus:
return "-"
case Star:
return "*"
case Slash:
return "/"
case LParen:
return "("
case RParen:
return ")"
case EOF:
return "EOF"
default:
return fmt.Sprintf("Unknown(%d)", int(t))
}
}
// Token represents a single lexical token.
type Token struct {
Type Type // the kind of token
Literal string // raw text (e.g. "3.14", "+")
Pos int // byte offset in input string
}