hlex-1.0.0: test/ExampleLang.hs
module ExampleLang
( Token(..)
, lexer
) where
import Hlex
data Token = Ident String
| Str String
| Number Float
| Assign
deriving(Read, Show, Eq)
grammar :: Grammar Token
grammar = [ Error "\"[^\"]*\n" "Can't have a new line in a string"
, Tokenize "\"[^\"]*\"" $ Str . init . tail
, JustToken "=" Assign
, Tokenize "[a-zA-Z]+" Ident
, Tokenize "[0-9]+(\\.[0-9]+)?" $ Number . read
, Skip "[ \n\r\t]+"
]
lexer :: Lexer Token
lexer = hlex grammar