Changeset 15297
- Timestamp:
- 02/18/07 15:59:02 (21 months ago)
- Files:
-
- 47 modified
-
examples/mandel.pl (modified) (1 diff)
-
src/Pugs.hs (modified) (4 diffs)
-
src/Pugs/AST.hs (modified) (4 diffs)
-
src/Pugs/AST/Eval.hs (modified) (2 diffs)
-
src/Pugs/AST/Internals.hs (modified) (26 diffs)
-
src/Pugs/AST/Internals/Instances.hs (modified) (4 diffs)
-
src/Pugs/Bind.hs (modified) (1 diff)
-
src/Pugs/CodeGen.hs (modified) (2 diffs)
-
src/Pugs/CodeGen/JSON.hs (modified) (1 diff)
-
src/Pugs/CodeGen/PIL1.hs (modified) (1 diff)
-
src/Pugs/CodeGen/PIL2.hs (modified) (3 diffs)
-
src/Pugs/CodeGen/PIR.hs (modified) (4 diffs)
-
src/Pugs/CodeGen/Perl5.hs (modified) (1 diff)
-
src/Pugs/CodeGen/YAML.hs (modified) (2 diffs)
-
src/Pugs/Compile.hs (modified) (8 diffs)
-
src/Pugs/Compile/Pugs.hs (modified) (1 diff)
-
src/Pugs/Eval.hs (modified) (25 diffs)
-
src/Pugs/Eval/Var.hs (modified) (7 diffs)
-
src/Pugs/External.hs (modified) (2 diffs)
-
src/Pugs/Lexer.hs (modified) (2 diffs)
-
src/Pugs/Monads.hs (modified) (6 diffs)
-
src/Pugs/Parser.hs (modified) (32 diffs)
-
src/Pugs/Parser/Doc.hs (modified) (1 diff)
-
src/Pugs/Parser/Export.hs (modified) (2 diffs)
-
src/Pugs/Parser/Literal.hs (modified) (19 diffs)
-
src/Pugs/Parser/Operator.hs (modified) (9 diffs)
-
src/Pugs/Parser/Program.hs (modified) (2 diffs)
-
src/Pugs/Parser/Types.hs (modified) (1 diff)
-
src/Pugs/Parser/Unsafe.hs (modified) (2 diffs)
-
src/Pugs/Parser/Util.hs (modified) (6 diffs)
-
src/Pugs/Pretty.hs (modified) (4 diffs)
-
src/Pugs/Prim.hs (modified) (61 diffs)
-
src/Pugs/Prim/Eval.hs (modified) (9 diffs)
-
src/Pugs/Prim/List.hs (modified) (2 diffs)
-
src/Pugs/Prim/Match.hs (modified) (16 diffs)
-
src/Pugs/Prim/Yaml.hs (modified) (4 diffs)
-
src/Pugs/Run.hs (modified) (6 diffs)
-
src/Pugs/Run/Perl5.hs (modified) (4 diffs)
-
src/Pugs/Types.hs (modified) (3 diffs)
-
src/Pugs/Types/Array.hs (modified) (1 diff)
-
src/Pugs/Types/Code.hs (modified) (1 diff)
-
src/Pugs/Types/Handle.hs (modified) (1 diff)
-
src/Pugs/Types/Hash.hs (modified) (2 diffs)
-
src/Pugs/Types/Scalar.hs (modified) (2 diffs)
-
src/Pugs/Val.hs (modified) (2 diffs)
-
src/Pugs/Val/Base.hs (modified) (2 diffs)
-
src/Pugs/Val/Code.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
examples/mandel.pl
r12488 r15297 35 35 last() if $L > 0; 36 36 loop ($y=30; $P = $y * 0.1, $C = $P - 1.5;) { 37 last() if $y < 0;37 last() if $y < 27; 38 38 $y--; 39 39 loop ($x=0; $P = $x * 0.04, $c = $P - 2, $z=0.0, $Z=0.0;) { -
src/Pugs.hs
r15296 r15297 312 312 return () 313 313 where 314 exp = App (_Var "&require") Nothing [Val $ _VStr fn]314 exp = App (_Var "&require") Nothing [Val $ VStr fn] 315 315 316 316 doRunSingle :: TVar Env -> RunOptions -> String -> IO () … … 354 354 Val err@(VError (VStr msg) _) 355 355 | runOptShowPretty opts 356 , any (== "Unexpected end of input") (lines (cast msg)) -> do356 , any (== "Unexpected end of input") (lines msg) -> do 357 357 cont <- readline "....> " 358 358 case cont of … … 365 365 _ -> return $ makeDumpEnv exp 366 366 -- XXX Generalize this into structural folding 367 makeDumpEnv Noop = _Syn "continuation" []368 makeDumpEnv (Stmts x Noop) = Stmts x ( _Syn "continuation" [])367 makeDumpEnv Noop = Syn "continuation" [] 368 makeDumpEnv (Stmts x Noop) = Stmts x (Syn "continuation" []) 369 369 makeDumpEnv (Stmts x exp) = Stmts x $ makeDumpEnv exp 370 370 makeDumpEnv (Ann ann exp) = Ann ann $ makeDumpEnv exp 371 371 makeDumpEnv (Pad x y exp) = Pad x y $ makeDumpEnv exp 372 372 makeDumpEnv (Sym x y exp) = Sym x y $ makeDumpEnv exp 373 makeDumpEnv exp = Stmts exp ( _Syn "continuation" [])373 makeDumpEnv exp = Stmts exp (Syn "continuation" []) 374 374 handler (IOException ioe) | isUserError ioe = do 375 375 putStrLn "Internal error while running expression:" … … 405 405 406 406 runProgramWith :: 407 (Env -> Env) -> (Val -> IO a) -> String -> [String] -> String -> IO a407 (Env -> Env) -> (Val -> IO a) -> VStr -> [VStr] -> String -> IO a 408 408 runProgramWith fenv f name args prog = do 409 409 env <- prepareEnv name args -
src/Pugs/AST.hs
r15296 r15297 1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -funbox-strict-fields -fallow-overlapping-instances -foverloaded-strings#-}1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -funbox-strict-fields -fallow-overlapping-instances #-} 2 2 3 3 {-| … … 216 216 mergeStmts x y = Stmts x y 217 217 218 isImplicitTopic :: ID-> Bool218 isImplicitTopic :: String -> Bool 219 219 isImplicitTopic "subst" = True 220 220 isImplicitTopic "match" = True … … 234 234 235 235 _underscore :: ID 236 _underscore = _cast "_"236 _underscore = cast "_" 237 237 238 238 newPackage :: String -> String -> [String] -> [String] -> Exp … … 244 244 (Just $ Val (VType $ mkType cls)) 245 245 [ Syn "named" 246 [ Val ( _VStr "is")247 , Val (VList $ map castVclasses)246 [ Val (VStr "is") 247 , Val (VList $ map VStr classes) 248 248 ] 249 249 , Syn "named" 250 [ Val ( _VStr "does")251 , Val (VList $ map castVroles)250 [ Val (VStr "does") 251 , Val (VList $ map VStr roles) 252 252 ] 253 253 , Syn "named" 254 [ Val ( _VStr "name")255 , Val ( castVname)254 [ Val (VStr "name") 255 , Val (VStr name) 256 256 ] 257 257 , Syn "named" 258 [ Val ( _VStr "attrs")258 [ Val (VStr "attrs") 259 259 , Syn "\\{}" [Noop] 260 260 ] -
src/Pugs/AST/Eval.hs
r15296 r15297 102 102 103 103 instance Monad Eval where 104 {-# INLINE return #-} 105 return a = EvalT (return (RNormal a)) 106 {-# INLINE (>>=) #-} 107 m >>= k = EvalT (do 104 return a = EvalT $ return (RNormal a) 105 m >>= k = EvalT $ do 108 106 a <- runEvalT m 109 107 case a of 110 RNormal x -> runEvalT $! k x 111 RException x -> return (RException x)) 112 {-# INLINE fail #-} 108 RNormal x -> runEvalT (k x) 109 RException x-> return (RException x) 113 110 fail str = do 114 111 pos <- asks envPos' 115 EvalT (return (RException (errStrPos (cast str) pos)))112 EvalT $ return (RException (errStrPos (cast str) pos)) 116 113 117 114 instance Error Val where 118 noMsg = errStr (_cast "")119 strMsg = errStr . _cast115 noMsg = errStr "" 116 strMsg = errStr 120 117 121 118 instance MonadTrans EvalT where … … 189 186 instance MonadReader Env Eval where 190 187 ask = lift ask 191 local f m = EvalT (local f (runEvalT m))188 local f m = EvalT $ local f (runEvalT m) 192 189 193 190 instance MonadCont Eval where -
src/Pugs/AST/Internals.hs
r15296 r15297 1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -fallow-overlapping-instances -fallow-undecidable-instances -fparr -foverloaded-strings#-}1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -fallow-overlapping-instances -fallow-undecidable-instances -fparr #-} 2 2 3 3 module Pugs.AST.Internals ( … … 82 82 newSVval, -- used in Run.Perl5 83 83 84 DebugInfo, _Sy n, _Sym, _Var, _VStr -- String -> ByteString constructors84 DebugInfo, _Sym, _Var -- String -> ByteString constructors 85 85 ) where 86 86 … … 281 281 => ObjectId -> Maybe Dynamic -> VType -> [(VStr, Val)] -> m VObject 282 282 createObjectRaw uniq opaq typ attrList = do 283 attrs <- liftSTM . unsafeIOToSTM . hashList$ map (\(a,b) -> (a, lazyScalar b)) attrList283 attrs <- liftSTM . unsafeIOToSTM . H.fromList H.hashString $ map (\(a,b) -> (a, lazyScalar b)) attrList 284 284 return $ MkObject 285 285 { objType = typ … … 324 324 mapM fromVal vlist 325 325 doCast v = castFailM v "[Int]" 326 327 instance Value [String] where328 castV = VList . map _VStr329 fromVal v = do330 vlist <- fromVal v331 mapM fromVal vlist332 doCast v = castFailM v "[String]"333 326 334 327 instance Value [VStr] where … … 392 385 castV = VCode 393 386 fromSV sv = return $ mkPrim 394 { subName = cast ("<anon>" :: String)387 { subName = cast "<anon>" 395 388 , subParams = [defaultArrayParam] 396 389 , subReturns = mkType "Scalar::Perl5" … … 455 448 doCast (VBool b) = return $ if b then 1 % 1 else 0 % 1 456 449 doCast (VList l) = return $ genericLength l 457 doCast (VStr s) | not ( Str.null s), isSpace $ Str.last s = do458 str <- fromVal ( castV $ Str.init s)450 doCast (VStr s) | not (null s) , isSpace $ last s = do 451 str <- fromVal (VStr $ init s) 459 452 return str 460 doCast (VStr s) | not ( Str.null s), isSpace $ Str.head s = do461 str <- fromVal ( castV $ Str.tail s)453 doCast (VStr s) | not (null s) , isSpace $ head s = do 454 str <- fromVal (VStr $ tail s) 462 455 return str 463 456 doCast (VStr s) = return $ 464 case parseNatOrRat (cast s) of457 case ( parseNatOrRat s ) of 465 458 Left _ -> 0 % 1 466 459 Right rv -> case rv of … … 480 473 doCast (VNum n) = return $ n 481 474 doCast (VComplex (r :+ _)) = return $ r 482 doCast (VStr s) | not ( Str.null s), isSpace $ Str.last s = do483 str <- fromVal ( castV $ Str.init s)475 doCast (VStr s) | not (null s) , isSpace $ last s = do 476 str <- fromVal (VStr $ init s) 484 477 return str 485 doCast (VStr s) | not ( Str.null s), isSpace $ Str.head s = do486 str <- fromVal ( castV $ Str.tail s)478 doCast (VStr s) | not (null s) , isSpace $ head s = do 479 str <- fromVal (VStr $ tail s) 487 480 return str 488 481 doCast (VStr "Inf") = return $ 1/0 … … 490 483 doCast (VStr "NaN") = return $ 0/0 491 484 doCast (VStr s) = return $ 492 case ( parseNatOrRat (cast s)) of485 case ( parseNatOrRat s ) of 493 486 Left _ -> 0 494 487 Right rv -> case rv of … … 527 520 instance Value VStr where 528 521 castV = VStr 529 fromSV sv = fmap cast (liftIO $ svToVStr sv)530 fromVV vv = liftSIO $ cast (Val.asStr vv)531 fromVal (VList l) = return . Str.unwords =<< mapM fromVal l532 fromVal v@(PerlSV _) = fromVal' v533 fromVal VUndef = return (__"")534 fromVal (VType t) = return (cast t)535 fromVal v = do536 vt <- evalValType v537 case vt of538 MkType "Pair" -> do539 -- Special case for pairs: "$pair" eq540 -- "$pair.key()\t$pair.value()"541 (k, v) <- join $ doPair v pair_fetch542 k' <- fromVal k543 v' <- fromVal v544 return $ k' +++ __"\t" +++ v'545 MkType "Hash" -> do546 --- XXX special case for Hash -- need to Objectify547 hv <- join $ doHash v hash_fetch548 lns <- forM (Map.assocs hv) $ \(k, v) -> do549 str <- fromVal v550 return $ k +++ __"\t" +++ str551 return $ Str.unlines lns552 _ -> fromVal' v553 doCast VUndef = return $ __""554 doCast VType{} = return $ __""555 doCast (VStr s) = return s556 doCast (VBool b) = return $ if b then __"1" else __""557 doCast (VInt i) = return $ __(show i)558 doCast (VRat r) = return $ __(showRat r)559 doCast (VNum n) = return $ __(showNum n)560 doCast (VComplex (r :+ i)) = return $ __(showNum r ++ " + " ++ showNum i ++ "i")561 doCast (VList l) = fmap Str.unwords (mapM fromVal l)562 doCast (VCode s) = return $ __("<" ++ show (subType s) ++ "(" ++ cast (subName s) ++ ")>")563 doCast (VJunc j) = return $ __(show j)564 doCast (VThread t) = return $ __(takeWhile isDigit $ dropWhile (not . isDigit) $ show t)565 doCast (VHandle h) = return $ __"<VHandle (" +++ __(show h) +++ __">"566 doCast (VMatch m) = return $ matchStr m567 -- doCast (VType typ) = return $ showType typ -- "::" ++ showType typ568 doCast (VObject o) = return $ __"<obj:" +++ cast (objType o) +++ __">"569 doCast x = return $ __"<" +++ cast (valType x) +++ __">"570 571 instance Value String where572 castV = VStr . cast573 522 fromSV sv = liftIO $ svToVStr sv 574 523 fromVV vv = liftSIO $ cast (Val.asStr vv) … … 592 541 lns <- forM (Map.assocs hv) $ \(k, v) -> do 593 542 str <- fromVal v 594 return $ k ++ + __"\t" +++ str595 return $ unlines (cast lns)543 return $ k ++ "\t" ++ str 544 return $ unlines lns 596 545 _ -> fromVal' v 597 546 doCast VUndef = return "" 598 547 doCast VType{} = return "" 599 doCast (VStr s) = return (cast s)548 doCast (VStr s) = return s 600 549 doCast (VBool b) = return $ if b then "1" else "" 601 550 doCast (VInt i) = return $ show i … … 608 557 doCast (VThread t) = return $ takeWhile isDigit $ dropWhile (not . isDigit) $ show t 609 558 doCast (VHandle h) = return $ "<" ++ "VHandle (" ++ (show h) ++ ">" 610 doCast (VMatch m) = return $ (cast (matchStr m))559 doCast (VMatch m) = return $ matchStr m 611 560 -- doCast (VType typ) = return $ showType typ -- "::" ++ showType typ 612 561 doCast (VObject o) = return $ "<obj:" ++ showType (objType o) ++ ">" … … 625 574 newSVval val = case val of 626 575 PerlSV sv -> return sv 627 VStr str -> bufToSV str576 VStr str -> vstrToSV str 628 577 VType typ -> vstrToSV (showType typ) 629 578 VBool bool -> vintToSV (fromEnum bool) … … 1069 1018 mkPrim = MkCode 1070 1019 { isMulti = True 1071 , subName = cast ("&" :: String)1020 , subName = cast "&" 1072 1021 , subType = SubPrim 1073 1022 , subEnv = Nothing … … 1096 1045 mkSub = MkCode 1097 1046 { isMulti = False 1098 , subName = cast ("&" :: String)1047 , subName = cast "&" 1099 1048 , subType = SubBlock 1100 1049 , subEnv = Nothing … … 1123 1072 mkCode = MkCode 1124 1073 { isMulti = False 1125 , subName = cast ("&" :: String)1074 , subName = cast "&" 1126 1075 , subType = SubBlock 1127 1076 , subEnv = Nothing … … 1181 1130 | App !Exp !(Maybe Exp) ![Exp] -- ^ Function application 1182 1131 -- e.g. myfun($invocant: $arg) 1183 | Syn ! ID ![Exp]-- ^ Syntactic construct that cannot1132 | Syn !String ![Exp] -- ^ Syntactic construct that cannot 1184 1133 -- be represented by 'App'. 1185 1134 | Ann !Ann !Exp -- ^ Annotation (see @Ann@) … … 1198 1147 _Var :: String -> Exp 1199 1148 _Var str = Var (possiblyFixOperatorName (cast str)) 1200 1201 _VStr :: String -> Val1202 _VStr = VStr . cast1203 1204 _Syn :: String -> [Exp] -> Exp1205 _Syn s xs = Syn (cast s) xs1206 1149 1207 1150 instance Value Exp where … … 1290 1233 (exps', vs') = foldr extractPlaceholderVarsExp ([], vs) exps 1291 1234 vs'' = case n of 1292 "when" -> Set.insert varTopicvs'1293 "given" -> Set.delete varTopicvs'1235 "when" -> Set.insert (cast "$_") vs' 1236 "given" -> Set.delete (cast "$_") vs' 1294 1237 _ -> vs' 1295 1238 extractPlaceholderVars (Var var) vs … … 1297 1240 , var' <- var{ v_twigil = TNil } 1298 1241 = (Var var', Set.insert var' vs) 1299 | var == varTopic1242 | var == cast "$_" 1300 1243 = (Var var, Set.insert var vs) 1301 1244 | otherwise … … 1339 1282 defaultArrayParam = buildParam "" "*" "@_" (Val VUndef) 1340 1283 defaultHashParam = buildParam "" "*" "%_" (Val VUndef) 1341 defaultScalarParam = buildParam "" "?" "$_" ( _Var"$_")1284 defaultScalarParam = buildParam "" "?" "$_" (Var $ cast "$_") 1342 1285 1343 1286 type DebugInfo = Maybe (TVar (Map ID String)) … … 1614 1557 dumpRef (MkRef (ICode cv)) = do 1615 1558 vsub <- code_assuming cv [] [] 1616 return ( castV$ "(MkRef (ICode $ " ++ show vsub ++ "))")1559 return (VStr $ "(MkRef (ICode $ " ++ show vsub ++ "))") 1617 1560 dumpRef (MkRef (IScalar sv)) | scalar_iType sv == mkType "Scalar::Const" = do 1618 1561 sv <- scalar_fetch sv 1619 return ( castV$ "(MkRef (IScalar $ " ++ show sv ++ "))")1620 dumpRef ref = return ( castV$ "(unsafePerformIO . newObject $ mkType \"" ++ showType (refType ref) ++ "\")")1562 return (VStr $ "(MkRef (IScalar $ " ++ show sv ++ "))") 1563 dumpRef ref = return (VStr $ "(unsafePerformIO . newObject $ mkType \"" ++ showType (refType ref) ++ "\")") 1621 1564 1622 1565 readRef :: VRef -> Eval Val … … 1681 1624 return $ arrayRef (MkIArray iv) 1682 1625 "Hash" -> do 1683 h <- liftIO hashNew1626 h <- liftIO (H.new (==) H.hashString) 1684 1627 return $ hashRef (h :: IHash) 1685 1628 "Code" -> return $! codeRef $ mkPrim … … 1911 1854 newHash hash = do 1912 1855 --liftSTM $ unsafeIOToSTM $ putStrLn "new hash" 1913 ihash <- liftSTM . unsafeIOToSTM $ hashList(map (\(a,b) -> (a, lazyScalar b)) (Map.toList hash))1856 ihash <- liftSTM . unsafeIOToSTM $ H.fromList H.hashString (map (\(a,b) -> (a, lazyScalar b)) (Map.toList hash)) 1914 1857 return $ IHash ihash 1915 1858 … … 2012 1955 , envLValue = False 2013 1956 , envGlobal = glob 2014 , envPackage = _cast "Main"1957 , envPackage = cast "Main" 2015 1958 , envClasses = initTree 2016 1959 , envEval = const (return VUndef) … … 2043 1986 asYAML x = asYAMLmap "Map" $ Map.toAscList (Map.map asYAML x) 2044 1987 fromYAML node = fmap Map.fromList (fromYAMLmap node) 2045 instance YAML a => YAML (Map ByteString a) where2046 asYAML x = asYAMLmapBuf "Map" $ Map.toAscList (Map.map asYAML x)2047 fromYAML node = fmap Map.fromList (fromYAMLmapBuf node)2048 1988 instance YAML a => YAML (Map Var a) where 2049 1989 asYAML x = asYAMLmap "Map" . sortBy (\x y -> fst x `compare` fst y) $ … … 2098 2038 asYAML x = do 2099 2039 l <- liftIO $ H.toList x 2100 asYAMLmap Buf"IHash" (map (\(k, v) -> (k, asYAML v)) l)2040 asYAMLmap "IHash" (map (\(k, v) -> (k, asYAML v)) l) 2101 2041 fromYAML node = do 2102 l <- fromYAMLmap Bufnode2103 l' <- hashListl2042 l <- fromYAMLmap node 2043 l' <- H.fromList H.hashString l 2104 2044 return l' 2105 2045 -
src/Pugs/AST/Internals/Instances.hs
r15296 r15297 1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -fallow-overlapping-instances -fallow-undecidable-instances -fparr -foverloaded-strings#-}1 {-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -fallow-overlapping-instances -fallow-undecidable-instances -fparr #-} 2 2 3 3 … … 63 63 , envLValue = False 64 64 , envGlobal = glob 65 , envPackage = _cast "Main"65 , envPackage = cast "Main" 66 66 , envClasses = initTree 67 67 , envEval = const (return VUndef) … … 94 94 asYAML x = asYAMLmap "Map" $ Map.toAscList (Map.map asYAML x) 95 95 fromYAML node = fmap Map.fromList (fromYAMLmap node) 96 instance YAML a => YAML (Map ByteString a) where97 asYAML x = asYAMLmapBuf "Map" $ Map.toAscList (Map.map asYAML x)98 fromYAML node = fmap Map.fromList (fromYAMLmapBuf node)99 96 instance YAML a => YAML (Map Var a) where 100 97 asYAML x = asYAMLmap "Map" . sortBy (\x y -> fst x `compare` fst y) $ … … 149 146 asYAML x = do 150 147 l <- liftIO $ H.toList x 151 asYAMLmap Buf"IHash" (map (\(k, v) -> (k, asYAML v)) l)148 asYAMLmap "IHash" (map (\(k, v) -> (k, asYAML v)) l) 152 149 fromYAML node = do 153 l <- fromYAMLmap Bufnode154 l' <- hashListl150 l <- fromYAMLmap node 151 l' <- H.fromList H.hashString l 155 152 return l' 156 153 -
src/Pugs/Bind.hs
r15296 r15297 1 {-# OPTIONS_GHC -fglasgow-exts -fallow-overlapping-instances -foverloaded-strings#-}1 {-# OPTIONS_GHC -fglasgow-exts -fallow-overlapping-instances #-} 2 2 3 3 {-| -
src/Pugs/CodeGen.hs
r15296 r15297 43 43 , ("Parse-YAML", genParseYAML) 44 44 , ("Parse-HsYAML",genParseHsYAML) 45 , ("Parse-Pretty",fmap ( _VStr . (++"\n") . pretty) (asks envBody))45 , ("Parse-Pretty",fmap (VStr . (++"\n") . pretty) (asks envBody)) 46 46 -- , ("XML", genXML) 47 47 ] … … 91 91 rv <- runEvalIO env gen 92 92 case rv of 93 VStr str -> return (cast str)93 VStr str -> return str 94 94 _ -> fail (show rv) -
src/Pugs/CodeGen/JSON.hs
r15296 r15297 11 11 genJSON = do 12 12 penv <- compile () :: Eval PIL_Environment 13 return . _VStr . unlines $ [showJSON penv]13 return . VStr . unlines $ [showJSON penv] -
src/Pugs/CodeGen/PIL1.hs
r15296 r15297 10 10 genPIL1 = do 11 11 penv <- compile () 12 return . _VStr . unlines $12 return . VStr . unlines $ 13 13 [ "PIL_Environment" 14 14 , " { pilMain = (" ++ show (pilMain penv) ++ ")" -
src/Pugs/CodeGen/PIL2.hs
r15296 r15297 17 17 genPIL2 = do 18 18 penv <- compile () 19 return . _VStr . unlines $19 return . VStr . unlines $ 20 20 [ "PIL_Environment" 21 21 , " { pilMain = (" ++ show (pilMain penv) ++ ")" … … 27 27 genPIL2Perl5 = do 28 28 penv <- compile () :: Eval PIL_Environment 29
