packages feed

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