remove unnecessary
[fp.git] / src / Lambda / Parser / Fancy.hs
index 6e87da1..3ad5728 100644 (file)
@@ -1,7 +1,4 @@
-{-# OPTIONS_GHC
-    -fno-warn-unused-do-bind
-    -fno-warn-orphans
-#-}
+{-# OPTIONS_GHC -fno-warn-unused-do-bind -fno-warn-orphans #-}
 {-# LANGUAGE PatternSynonyms #-}
 
 -- |
 -- 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 where
+module Lambda.Parser.Fancy 
+  (
+  -- * 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
 
 import Lambda.Term
 
+-- $setup
+-- >>> import Test.QuickCheck
+-- >>> import Test.Term
+
 -- | 
 -- >>> print $ Lambda "x" (Var "x")
 -- (λx.x)
@@ -48,12 +57,12 @@ tRead s = case parseOnly (parseTerm <* endOfInput) (T.pack s) of
 
 parseVar :: Parser Term
 parseVar = do
-  x <- many1 (letter <|> digit)
+  x <- many1 $ satisfy isAsciiLower
   return $! Var x
 
 parseLambda :: Parser Term
 parseLambda = do
-  char '\\' <|> char 'λ'
+  char '\\' <|> char 'λ' <|> char 'L'
   vars <- sepBy1 parseVar (char ' ')
   char '.'
   t <- parseTerm