packages feed

yapb-0.1.0: app/parser/Lexer.hs

module Lexer(lexerSpec) where

import Prelude hiding (EQ)
import CommonParserUtil
import Token

mkFn :: Token -> (String -> Maybe Token)
mkFn tok = \text -> Just tok

skip :: String -> Maybe Token
skip = \text -> Nothing

lexerSpec :: LexerSpec Token
lexerSpec = LexerSpec
  {
    endOfToken    = END_OF_TOKEN,
    lexerSpecList = 
      [ ("[ \t\n]", skip),
        ("[0-9]+" , mkFn INTEGER_NUMBER),
        ("\\("    , mkFn OPEN_PAREN),
        ("\\)"    , mkFn CLOSE_PAREN),
        ("\\+"    , mkFn ADD),
        ("\\-"    , mkFn SUB),
        ("\\*"    , mkFn MUL),
        ("\\/"    , mkFn DIV),
        ("\\="    , mkFn EQ),
        ("\\;"    , mkFn SEMICOLON),
        ("[a-zA-Z][a-zA-Z0-9]*"    , mkFn IDENTIFIER)
      ]
  }