2
module Main (main) where
9
$alpha = [a-zA-Z] -- alphabetic characters
17
$digit+ { \s -> Int (read s) }
18
[\=\+\-\*\/\(\)] { \s -> Sym (head s) }
19
$alpha [$alpha $digit \_ \']* { \s -> Var s }
22
-- Each right-hand side has type :: String -> Token
34
main = if test1 /= result1 then exitFailure
35
else exitWith ExitSuccess
37
test1 = alexScanTokens " let in 012334\n=+*foo bar__'"
38
result1 = [Let,In,Int 12334,Sym '=',Sym '+',Sym '*',Var "foo",Var "bar__'"]