X-Git-Url: http://git.tomasm.cz/fp.git/blobdiff_plain/dbb3af7ea8341e87b254dc94a613aec837b676b8..HEAD:/src/Lambda/Parser/Fancy.hs?ds=sidebyside diff --git a/src/Lambda/Parser/Fancy.hs b/src/Lambda/Parser/Fancy.hs index 10231b8..f7a523d 100644 --- a/src/Lambda/Parser/Fancy.hs +++ b/src/Lambda/Parser/Fancy.hs @@ -9,15 +9,20 @@ -- Maintainer : tomik.musil@gmail.com -- Stability : experimental -- --- Parser for λ-terms. '.' in λ implies brackets to the end of the context. +-- Parser for λ-terms. \'.\' in λ implies brackets to the end of the context. -- TODO: proper documentation module Lambda.Parser.Fancy - ( tRead + ( + -- * Main parser + tRead , parseTerm + -- * Auxiliary parsers + , parseVar ) where +import Data.Char (isAsciiLower) import Data.Text as T hiding (map) import Data.Attoparsec.Text import Control.Applicative @@ -52,12 +57,12 @@ tRead s = case parseOnly (parseTerm <* endOfInput) (T.pack s) of parseVar :: Parser Term parseVar = do - x <- many1 (letter <|> digit) + x <- many1 letter return $! Var x parseLambda :: Parser Term parseLambda = do - char '\\' <|> char 'λ' + char '\\' <|> char 'λ' <|> char 'L' vars <- sepBy1 parseVar (char ' ') char '.' t <- parseTerm