package saccharine import "git.maximhutz.com/max/lambda/pkg/token" // scanner is the declarative lexer for the Saccharine language. var scanner = token.NewScanner[TokenType](). On(`:=`, TokenAssign, 1). On(`\(`, TokenOpenParen, 0). On(`\)`, TokenCloseParen, 0). On(`\{`, TokenOpenBrace, 0). On(`\}`, TokenCloseBrace, 0). On(`;`, TokenHardBreak, 0). On(`\n`, TokenSoftBreak, 0). On(`\\`, TokenSlash, 0). On(`\.`, TokenDot, 0). On(`[a-zA-Z0-9_]+`, TokenAtom, 0). Skip(`#[^\n]*`, 0). Skip(`[^\S\n]+`, 0) // scan tokenizes a string into Saccharine tokens. func scan(input string) ([]Token, error) { return scanner.Scan(input) }