packages feed

yapb-0.2: app/syntaxcompletion/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),
        ("\\("    , mkFn OPEN_PAREN),
        ("\\)"    , mkFn CLOSE_PAREN),
        ("fn"    , mkFn FN),
        ("let"    , mkFn LET),
        ("in"    , mkFn IN),
        ("end"    , mkFn END),
        ("val"    , mkFn VAL),
        ("=>"    , mkFn ARROW),
        ("="    , mkFn EQ),
        ("[a-zA-Z][a-zA-Z0-9]*"    , mkFn IDENTIFIER)
      ]
  }