Changeset 9009
- Timestamp:
- 02/15/06 16:10:35 (3 years ago)
- Location:
- src/Pugs
- Files:
-
- 3 modified
-
AST/Internals.hs (modified) (8 diffs)
-
AST/Internals.hs-drift (modified) (6 diffs)
-
CodeGen/YAML.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/AST/Internals.hs
r9007 r9009 746 746 type VBlock = Exp 747 747 data VControl 748 = ControlLeave !(Env -> Eval Bool) !Val 749 | ControlExit !ExitCode 748 = ControlExit !ExitCode 750 749 | ControlEnv !Env 751 deriving (Show, Eq, Ord, Typeable) {-!derive: YAML!-} 750 -- | ControlLeave !(Env -> Eval Bool) !Val 751 deriving (Show, Eq, Ord, Typeable) 752 752 753 753 {-| … … 1137 1137 , envInitDat :: !(TVar InitDat) -- ^ BEGIN result information 1138 1138 } 1139 deriving (Show, Eq, Ord, Typeable) {-!derive: YAML!-}1139 deriving (Show, Eq, Ord, Typeable) 1140 1140 1141 1141 {-| … … 1825 1825 } 1826 1826 1827 instance (Typeable a, Typeable b) => YAML (a -> Eval b) 1828 instance (Typeable a) => YAML (Eval a) 1827 fakeEval :: MonadIO m => Eval Val -> m Val 1828 fakeEval = liftIO . runEvalIO _FakeEnv 1829 1830 instance YAML ([Val] -> Eval Val) where 1831 asYAML _ = return nilNode 1832 fromYAML _ = return (const $ return VUndef) 1833 instance YAML (Maybe Env) where 1834 asYAML _ = return nilNode 1835 fromYAML _ = return Nothing 1836 instance YAML (Eval Val) where 1837 asYAML x = asYAML =<< fakeEval x 1838 fromYAML x = return =<< fromYAML x 1829 1839 instance YAML a => YAML (Map String a) where 1830 1840 asYAML x = asYAMLmap "Map" $ Map.toList (Map.map asYAML x) … … 1834 1844 instance YAML VRef where 1835 1845 asYAML (MkRef (ICode cv)) = do 1836 VCode vsub <- liftIO $ runEvalIO _FakeEnv$ fmap VCode (code_fetch cv)1846 VCode vsub <- fakeEval $ fmap VCode (code_fetch cv) 1837 1847 vsubC <- asYAML vsub 1838 1848 return $ mkTagNode (tagHs "VCode") (el vsubC) 1839 1849 asYAML (MkRef (IScalar sv)) = do 1840 val <- liftIO $ runEvalIO _FakeEnv$ scalar_fetch sv1850 val <- fakeEval $ scalar_fetch sv 1841 1851 svC <- asYAML val 1842 1852 let tag = if scalar_iType sv == mkType "Scalar::Const" 1843 1853 then "VScalar" else "IScalar" 1844 1854 return $ mkTagNode (tagHs tag) (el svC) 1855 asYAML (MkRef (IArray av)) = do 1856 VList vals <- fakeEval $ fmap VList (array_fetch av) 1857 avC <- asYAML vals 1858 return $ mkTagNode (tagHs "Array") (el avC) 1845 1859 asYAML ref = do 1846 val <- liftIO $ runEvalIO _FakeEnv$ readRef ref1860 val <- fakeEval $ readRef ref 1847 1861 svC <- asYAML val 1862 liftIO $ print "====>" 1848 1863 liftIO $ print svC 1849 1864 fail ("not implemented: asYAML \"" ++ showType (refType ref) ++ "\"") … … 1854 1869 fromYAML node@MkYamlNode{tag=Just "tag:hs:IScalar"} = 1855 1870 fmap MkRef (newScalar =<< fromYAML node) 1856 1871 fromYAML node@MkYamlNode{tag=Just "tag:hs:Array"} = 1872 fmap MkRef (newArray =<< fromYAML node) 1873 1874 instance YAML VControl 1857 1875 instance YAML (Set Val) 1858 1876 instance YAML (VThread Val) 1859 1877 instance YAML ClassTree 1860 1878 instance YAML Dynamic 1861 instance YAML ExitCode1862 1879 instance YAML Pragma 1863 1880 instance YAML ProcessHandle … … 1872 1889 instance Typeable Unique where typeOf _ = typeOf () 1873 1890 instance Typeable ProcessHandle where typeOf _ = typeOf () 1874 instance Typeable ExitCode where typeOf _ = typeOf ()1875 1891 instance Typeable Regex where typeOf _ = typeOf () 1876 1892 instance Typeable1 Tree where typeOf1 _ = typeOf () … … 2033 2049 asYAML (PerlSV aa) = asYAMLseq "PerlSV" [asYAML aa] 2034 2050 2035 instance YAML VControl where2036 asYAML (ControlLeave aa ab) = asYAMLseq "ControlLeave"2037 [asYAML aa , asYAML ab]2038 asYAML (ControlExit aa) = asYAMLseq "ControlExit" [asYAML aa]2039 asYAML (ControlEnv aa) = asYAMLseq "ControlEnv" [asYAML aa]2040 2041 2051 instance YAML VJunc where 2042 2052 asYAML (MkJunc aa ab ac) = asYAMLmap "MkJunc" … … 2134 2144 asYAML (NonTerm aa) = asYAMLseq "NonTerm" [asYAML aa] 2135 2145 2136 instance YAML Env where2137 asYAML (MkEnv aa ab ac ad ae af ag ah ai aj ak al am an ao ap) =2138 asYAMLmap "MkEnv"2139 [("envContext", asYAML aa) , ("envLValue", asYAML ab) ,2140 ("envLexical", asYAML ac) , ("envImplicit", asYAML ad) ,2141 ("envGlobal", asYAML ae) , ("envPackage", asYAML af) ,2142 ("envClasses", asYAML ag) , ("envEval", asYAML ah) ,2143 ("envCaller", asYAML ai) , ("envOuter", asYAML aj) ,2144 ("envBody", asYAML ak) , ("envDepth", asYAML al) ,2145 ("envDebug", asYAML am) , ("envPos", asYAML an) ,2146 ("envPragmas", asYAML ao) , ("envInitDat", asYAML ap)]2147 2148 2146 instance YAML InitDat where 2149 2147 asYAML (MkInitDat aa) = asYAMLmap "MkInitDat" -
src/Pugs/AST/Internals.hs-drift
r9007 r9009 752 752 type VBlock = Exp 753 753 data VControl 754 = ControlLeave !(Env -> Eval Bool) !Val 755 | ControlExit !ExitCode 754 = ControlExit !ExitCode 756 755 | ControlEnv !Env 757 deriving (Show, Eq, Ord, Typeable) {-!derive: YAML!-} 756 -- | ControlLeave !(Env -> Eval Bool) !Val 757 deriving (Show, Eq, Ord, Typeable) 758 758 759 759 {-| … … 1143 1143 , envInitDat :: !(TVar InitDat) -- ^ BEGIN result information 1144 1144 } 1145 deriving (Show, Eq, Ord, Typeable) {-!derive: YAML!-}1145 deriving (Show, Eq, Ord, Typeable) 1146 1146 1147 1147 {-| … … 1831 1831 } 1832 1832 1833 instance (Typeable a, Typeable b) => YAML (a -> Eval b) 1834 instance (Typeable a) => YAML (Eval a) 1833 fakeEval :: MonadIO m => Eval Val -> m Val 1834 fakeEval = liftIO . runEvalIO _FakeEnv 1835 1836 instance YAML ([Val] -> Eval Val) where 1837 asYAML _ = return nilNode 1838 fromYAML _ = return (const $ return VUndef) 1839 instance YAML (Maybe Env) where 1840 asYAML _ = return nilNode 1841 fromYAML _ = return Nothing 1842 instance YAML (Eval Val) where 1843 asYAML x = asYAML =<< fakeEval x 1844 fromYAML x = return =<< fromYAML x 1835 1845 instance YAML a => YAML (Map String a) where 1836 1846 asYAML x = asYAMLmap "Map" $ Map.toList (Map.map asYAML x) … … 1840 1850 instance YAML VRef where 1841 1851 asYAML (MkRef (ICode cv)) = do 1842 VCode vsub <- liftIO $ runEvalIO _FakeEnv$ fmap VCode (code_fetch cv)1852 VCode vsub <- fakeEval $ fmap VCode (code_fetch cv) 1843 1853 vsubC <- asYAML vsub 1844 1854 return $ mkTagNode (tagHs "VCode") (el vsubC) 1845 1855 asYAML (MkRef (IScalar sv)) = do 1846 val <- liftIO $ runEvalIO _FakeEnv$ scalar_fetch sv1856 val <- fakeEval $ scalar_fetch sv 1847 1857 svC <- asYAML val 1848 1858 let tag = if scalar_iType sv == mkType "Scalar::Const" 1849 1859 then "VScalar" else "IScalar" 1850 1860 return $ mkTagNode (tagHs tag) (el svC) 1861 asYAML (MkRef (IArray av)) = do 1862 VList vals <- fakeEval $ fmap VList (array_fetch av) 1863 avC <- asYAML vals 1864 return $ mkTagNode (tagHs "Array") (el avC) 1851 1865 asYAML ref = do 1852 val <- liftIO $ runEvalIO _FakeEnv$ readRef ref1866 val <- fakeEval $ readRef ref 1853 1867 svC <- asYAML val 1868 liftIO $ print "====>" 1854 1869 liftIO $ print svC 1855 1870 fail ("not implemented: asYAML \"" ++ showType (refType ref) ++ "\"") … … 1860 1875 fromYAML node@MkYamlNode{tag=Just "tag:hs:IScalar"} = 1861 1876 fmap MkRef (newScalar =<< fromYAML node) 1862 1877 fromYAML node@MkYamlNode{tag=Just "tag:hs:Array"} = 1878 fmap MkRef (newArray =<< fromYAML node) 1879 1880 instance YAML VControl 1863 1881 instance YAML (Set Val) 1864 1882 instance YAML (VThread Val) 1865 1883 instance YAML ClassTree 1866 1884 instance YAML Dynamic 1867 instance YAML ExitCode1868 1885 instance YAML Pragma 1869 1886 instance YAML ProcessHandle … … 1878 1895 instance Typeable Unique where typeOf _ = typeOf () 1879 1896 instance Typeable ProcessHandle where typeOf _ = typeOf () 1880 instance Typeable ExitCode where typeOf _ = typeOf ()1881 1897 instance Typeable Regex where typeOf _ = typeOf () 1882 1898 instance Typeable1 Tree where typeOf1 _ = typeOf () -
src/Pugs/CodeGen/YAML.hs
r8687 r9009 11 11 genParseYAML :: Eval Val 12 12 genParseYAML = do 13 --glob <- asks envGlobal13 glob <- asks envGlobal 14 14 main <- asks envBody 15 yaml <- liftIO (showYaml main)15 yaml <- liftIO (showYaml (glob, main)) 16 16 return (VStr yaml) 17 17
