packages feed

HaRe-0.6: StrategyLib-4.0-beta/examples/joos-padl02/MainIO.hs

------------------------------------------------------------------------------

module MainIO where

import StrategyLib hiding (replaceFocus)
import VarsAnalyses
import Extraction
import ParseLib (papply)
import Datatypes
import Parser

------------------------------------------------------------------------------

mainIO = pWrap parseClassDeclaration performExtraction (return.show)

pWrap parser trafo pper f1 f2
  = do s  <- readFile f1
       t  <- pApply parser s
       t' <- trafo t
       s' <- pper t'
       writeFile f2 s'

pApply p s
  = case okParses of
      []     -> fail "Parse failed!!\n"
      [x]    -> putStrLn "Status: successful parse." >> return (fst x)
      (x:xs) -> putStrLn "WARNING: ambiguous parse." >> return (fst x)
    where okParses = filter (null.snd) (papply p s)
      
performExtraction t
  = case extractMethod t of
       Just t'  -> putStrLn "Status: successful extraction." >> return t'
       Nothing  -> putStrLn "WARNING: extraction failed." >> return t