\begin{code} module Lexer (identifier, reservedOp, parens, brackets) where import Text.Parsec import Text.Parsec.String import qualified Text.Parsec.Token as P language :: P.LanguageDef () language = P.LanguageDef { P.commentStart = "", P.commentEnd = "", P.commentLine = "", P.nestedComments = False, P.identStart = letter, P.identLetter = letter, P.opStart = parserZero, P.opLetter = parserZero, P.reservedNames = [], P.reservedOpNames = ["->"], P.caseSensitive = True} lexer :: P.TokenParser () lexer = P.makeTokenParser language identifier :: Parser String identifier = P.identifier lexer reservedOp :: String -> Parser () reservedOp = P.reservedOp lexer parens :: Parser a -> Parser a parens = P.parens lexer brackets :: Parser a -> Parser a brackets = P.brackets lexer \end{code}