yapb-0.2: app/ambiguous/Lexer.hs
module Lexer(lexerSpec) where
import Prelude hiding (EQ)
import CommonParserUtil
import Token
mkFn :: Token -> LexAction Token IO () -- (String -> Maybe Token)
mkFn tok = \text -> return (Just tok)
skip :: LexAction Token IO () -- String -> Maybe Token
skip = \text -> return Nothing
lexerSpec :: LexerSpec Token IO ()
lexerSpec = LexerSpec
{
endOfToken = END_OF_TOKEN,
lexerSpecList =
[ ("[ \t\n]", skip),
("[0-9]+" , mkFn INTEGER_NUMBER),
("\\(" , mkFn OPEN_PAREN),
("\\)" , mkFn CLOSE_PAREN),
("\\+" , mkFn ADD),
("\\-" , mkFn SUB),
("\\*" , mkFn MUL),
("\\/" , mkFn DIV),
("\\=" , mkFn EQ),
("\\;" , mkFn SEMICOLON),
("[a-zA-Z][a-zA-Z0-9]*" , mkFn IDENTIFIER)
]
}