{- $Id: test-gener.hs,v 1.1.2.3 2009/02/20 18:00:05 orlov Exp $ -} {- vim: set syntax=haskell expandtab tabstop=4: -} {-module Main ( main, test ) where -} import Prelude import Parser import System import Gener import qualified XSG gen3 :: FileName -> String -> String -> (XState, XState, XState) gen3 file str1 str2 = genStates st1 st2 idx1 where (tbl, prog) = compileFile file br1 = parse' pBranchA str1 br2 = parse' pBranchA str2 st1 = compileBranch tbl idx2 [] br1 st2 = compileBranch tbl idx3 [] br2 idx1:idx2:idx3:_ = XSG.newIdxs XSG.initIdx zzz :: (XSG.Vars, (XSG.Terms, XSG.Exps)) -> Parser.Branch zzz (v,(t,e)) = uncompileBranch (v,(t, [], e)) gen2 file str1 str2 = map zzz [x1,x2,x3] where (x1, x2, x3) = gen3 file str1 str2 ttt file str1 = uncompileBranch (args,st1) where (tbl, prog) = compileFile file br1 = parse' pBranchA str1 st1 = compileBranch tbl idx2 [] br1 args = XSG.getXVars st1 idx1:idx2:idx3:_ = XSG.newIdxs XSG.initIdx {- class Renum a where renum :: a -> a instance Renum XSG.Var where renum (XSG.W vN) = XSG.X vN renum (XSG.X vN) = XSG.X vN renum (XSG.L vN) = XSG.L vN instance Renum XSG.Exp where renum (XSG.VAR v ) = XSG.VAR (renum v) renum (XSG.C (cN, cN') es) = XSG.C (cN, cN') (renum es) instance Renum XSG.Clash where renum (e1 XSG.:=:e2) = (renum e1)XSG.:=:(renum e2) instance Renum XSG.Term where renum (vs XSG.:=(fn, es)) = (renum vs)XSG.:=(fn, renum es) instance Renum XSG.Func where renum (XSG.FUNC fN vs body) = XSG.FUNC fN (renum vs) (renum body) instance Renum a => Renum [a] where renum xs = map renum xs instance (Renum a, Renum b, Renum c) => Renum (a, b, c) where renum (x, y, z) = (renum x, renum y, renum z) -}