integer: , -2, 42

    float: 3.14, 2.71, 0.0

    1. float :: Parser Double
    2. float = Tok.float lexer

    And several tokens which enclose other token(s) returning a compose expression.

    1. parens :: Parser a -> Parser a
    2. semiSep :: Parser a -> Parser [a]
    3. semiSep = Tok.semiSep lexer
    4. commaSep = Tok.commaSep lexer

    Lastly our lexer requires that several tokens be reserved and not used as identifiers, we reference these as separately.

    reservedOp: +, *, -, ;

    1. reservedOp :: String -> Parser ()

    Putting it all together we have our Lexer.hs module.