projekty
/
fp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix more bugs
[fp.git]
/
src
/
Lambda
/
Parser
/
Fancy.hs
diff --git
a/src/Lambda/Parser/Fancy.hs
b/src/Lambda/Parser/Fancy.hs
index
79c1ca9
..
f7a523d
100644
(file)
--- a/
src/Lambda/Parser/Fancy.hs
+++ b/
src/Lambda/Parser/Fancy.hs
@@
-14,10
+14,15
@@
-- TODO: proper documentation
module Lambda.Parser.Fancy
-- TODO: proper documentation
module Lambda.Parser.Fancy
- ( tRead
+ (
+ -- * Main parser
+ tRead
, parseTerm
, parseTerm
+ -- * Auxiliary parsers
+ , parseVar
) where
) where
+import Data.Char (isAsciiLower)
import Data.Text as T hiding (map)
import Data.Attoparsec.Text
import Control.Applicative
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
parseVar :: Parser Term
parseVar = do
- x <- many1
(letter <|> digit)
+ x <- many1
letter
return $! Var x
parseLambda :: Parser Term
parseLambda = do
return $! Var x
parseLambda :: Parser Term
parseLambda = do
- char '\\' <|> char 'λ'
+ char '\\' <|> char 'λ'
<|> char 'L'
vars <- sepBy1 parseVar (char ' ')
char '.'
t <- parseTerm
vars <- sepBy1 parseVar (char ' ')
char '.'
t <- parseTerm