{ module TVSscriptLexer where } %wrapper "basic" $digit = 0-9 -- digits $alpha = [a-zA-Z] -- alphabetic tokens :- $white+ ; -- get rid of white space Integer { \s -> TType "Integer" 4} Boolean { \s -> TType "Boolean" 4} String { \s -> TType "String" 4} $digit+ { \s -> TInt (read s) } $digit+ . $digit [$digit]* { \s -> Flt s } $alpha [$alpha $digit \_]* { \s -> Var s } [\{] { \s -> LB } [\}] { \s -> RB } [\(] { \s -> LP } [\)] { \s -> RP } [\=] { \s -> EQUAL } [\.] { \s -> DOT } [\+] { \s -> PLUS } [\-] { \s -> MINUS } [\*] { \s -> STAR } [\/] { \s -> SLASH } { -- each action has type :: String -> Token data Token = LB | RB | LP | RP | EQUAL | DOT | PLUS | MINUS | STAR | SLASH | Var String | TInt Int | Flt String | Sym Char | TType String Int deriving (Eq, Show) -- main = do -- s <- getContents -- print "The input" -- print s -- print "The tokens" -- print (alexScanTokens s) -- print "done" }