packages feed

Feval-1.0.0.1: FVL/Lexer.hs

module FVL.Lexer
( names
, opNames
, identifier
, symbol
, reserved
, reservedOp
, parens
, brackets
, commaSep
, integer
, whiteSpace
) where

import Text.Parsec
import qualified Text.Parsec.Token as Token
import Text.Parsec.Language

names = words "True False Function If Then Else Let In Case Of"
opNames = words "-> && || ! + - * / % = ; < <= > >= :"

lexer = Token.makeTokenParser emptyDef
    { Token.commentStart = "/*"
    , Token.commentEnd = "*/"
    , Token.commentLine = "#"
    , Token.identStart = letter
    , Token.identLetter = alphaNum <|> char '_' <|> char '\''
    , Token.reservedNames = names
    , Token.reservedOpNames = opNames
    }

identifier = Token.identifier lexer
symbol     = Token.symbol lexer
reserved   = Token.reserved lexer
reservedOp = Token.reservedOp lexer
parens     = Token.parens lexer
brackets   = Token.brackets lexer
commaSep   = Token.commaSep lexer
integer    = Token.integer lexer
whiteSpace = Token.whiteSpace lexer