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). On(`\(`, TokenOpenParen). On(`\)`, TokenCloseParen). On(`\{`, TokenOpenBrace). On(`\}`, TokenCloseBrace). On(`;`, TokenHardBreak). On(`\n`, TokenSoftBreak). On(`\\`, TokenSlash). On(`\.`, TokenDot). On(`[a-zA-Z0-9_]+`, TokenAtom). Skip(`#[^\n]*`). Skip(`[^\S\n]+`) // scan tokenizes a string into Saccharine tokens. func scan(input string) ([]Token, error) { return scanner.Scan(input) }