{ module Tokens (alexScanTokens, Token (..) ) where import DS } %wrapper "basic" $digit = 0-9 -- digits $alpha = [a-zA-Z] -- alphabetic characters tokens :- $white+ ; "(" { \s -> TokenBracket } ")" { \s -> TokenCloseBracket } "," { \s -> TokenComma } "1" { \s -> TokenTrue } "0" { \s -> TokenFalse } "!" { \s -> TokenNot } $alpha [$alpha $digit \_ \']* { \s -> TVar s } { -- Each action has type :: String -> Token }