diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-11-07 16:38:37 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-11-07 16:38:37 +0000 |
| commit | 1fd01130157b81d1b8f4e334f93efa25acf0ecc3 (patch) | |
| tree | e3e550d6df056c6b39fb540e2991a01b8d83e56c /examples/big/MAP/MkBig.hs | |
| parent | e8bad7f7e0b39e74a276ce46a48446dead919942 (diff) | |
real parser for Alvey grammar: new version of BigLexEng
Diffstat (limited to 'examples/big/MAP/MkBig.hs')
| -rw-r--r-- | examples/big/MAP/MkBig.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/big/MAP/MkBig.hs b/examples/big/MAP/MkBig.hs new file mode 100644 index 000000000..0ea4e0b18 --- /dev/null +++ b/examples/big/MAP/MkBig.hs @@ -0,0 +1,42 @@ +module Main where + +import TransBig + +import IO ( stdin, hGetContents ) +import System ( getArgs, getProgName ) + +import LexLisp +import ParLisp +import SkelLisp +import PrintLisp +import AbsLisp +import ErrM + +type ParseFun a = [Token] -> Err a + +myLLexer = myLexer + +type Verbosity = Int + +putStrV :: Verbosity -> String -> IO () +putStrV v s = if v > 1 then putStrLn s else return () + +runFile :: Verbosity -> ParseFun Prog -> FilePath -> IO () +runFile v p f = putStrLn f >> readFile f >>= run v p + +run :: Verbosity -> ParseFun Prog -> String -> IO () +run v p s = let ts = myLLexer s in case p ts of + Bad s -> do putStrLn "\nParse Failed...\n" + putStrV v "Tokens:" + putStrV v $ show ts + putStrLn s + Ok tree -> do putStrLn "\nParse Successful!" + transTree tree + + + +main :: IO () +main = do + runFile 0 pProg infile + +infile = "bigwordlist.en" |
