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
}
