Changeset 15393

Show
Ignore:
Timestamp:
03/01/07 14:48:55 (21 months ago)
Author:
audreyt
Message:

* Refactor Str and Class into their own modules.

Files:
3 added
5 modified

Legend:

Unmodified
Added
Removed
  • Pugs.cabal.in

    r15376 r15393  
    1212author: Audrey Tang <autrijus@autrijus.org> 
    1313tested-with: GHC -any 
    14 exposed-modules: Pugs Pugs.AST Pugs.AST.Internals Pugs.AST.Internals.Instances Pugs.AST.Pad Pugs.AST.Pos Pugs.AST.Prag Pugs.AST.SIO Pugs.AST.Scope Pugs.AST.Utils Pugs.AST.Eval Pugs.Bind Pugs.Class.C3 Pugs.Class Pugs.CodeGen Pugs.CodeGen.JSON Pugs.CodeGen.PIL1 Pugs.CodeGen.PIR Pugs.CodeGen.PIR.Prelude Pugs.Prelude Pugs.CodeGen.Perl5 Pugs.CodeGen.YAML Pugs.Compat Pugs.Compile Pugs.Compile.Pugs Pugs.Config Pugs.Cont Pugs.DeepSeq Pugs.Embed Pugs.Embed.Haskell Pugs.Embed.Parrot Pugs.Embed.Perl5 Pugs.Embed.Pugs Pugs.Eval Pugs.Eval.Var Pugs.External Pugs.External.Haskell Pugs.Help Pugs.Internals Pugs.Internals.Cast Pugs.Internals.ID Pugs.Internals.String Pugs.Internals.Global Pugs.Internals.Monads Pugs.Junc Pugs.Lexer Pugs.Monads Pugs.PIL1 Pugs.PIL1.Instances Pugs.Parser Pugs.Parser.Charnames Pugs.Parser.Operator Pugs.Parser.Number Pugs.Parser.Program Pugs.Parser.Types Pugs.Parser.Unsafe Pugs.Parser.Export Pugs.Parser.Doc Pugs.Parser.Literal Pugs.Parser.Util Pugs.Pretty Pugs.Prim Pugs.Prim.Code Pugs.Prim.Eval Pugs.Prim.FileTest Pugs.Prim.Keyed Pugs.Prim.Lifts Pugs.Prim.List Pugs.Prim.Match Pugs.Prim.Numeric Pugs.Prim.Param Pugs.Prim.Yaml Pugs.Rule Pugs.Run Pugs.Run.Args Pugs.Run.Perl5 Pugs.Shell Pugs.Types Pugs.Version Emit.Common Emit.PIR Emit.PIR.Instances Pugs.Val Pugs.Val.Code Pugs.Val.Base Pugs.Exp MO.Util MO.Base MO.Compile MO.Run MO.Compile.Attribute MO.Compile.Role MO.Compile.Class 
     14exposed-modules: Pugs Pugs.AST Pugs.AST.Internals Pugs.AST.Internals.Instances Pugs.AST.Pad Pugs.AST.Pos Pugs.AST.Prag Pugs.AST.SIO Pugs.AST.Scope Pugs.AST.Utils Pugs.AST.Eval Pugs.Bind Pugs.Class.C3 Pugs.Class Pugs.CodeGen Pugs.CodeGen.JSON Pugs.CodeGen.PIL1 Pugs.CodeGen.PIR Pugs.CodeGen.PIR.Prelude Pugs.Prelude Pugs.CodeGen.Perl5 Pugs.CodeGen.YAML Pugs.Compat Pugs.Compile Pugs.Compile.Pugs Pugs.Config Pugs.Cont Pugs.DeepSeq Pugs.Embed Pugs.Embed.Haskell Pugs.Embed.Parrot Pugs.Embed.Perl5 Pugs.Embed.Pugs Pugs.Eval Pugs.Eval.Var Pugs.External Pugs.External.Haskell Pugs.Help Pugs.Internals Pugs.Internals.Cast Pugs.Internals.ID Pugs.Internals.String Pugs.Internals.Global Pugs.Internals.Monads Pugs.Junc Pugs.Lexer Pugs.Meta Pugs.Meta.Class Pugs.Meta.Str Pugs.Monads Pugs.PIL1 Pugs.PIL1.Instances Pugs.Parser Pugs.Parser.Charnames Pugs.Parser.Operator Pugs.Parser.Number Pugs.Parser.Program Pugs.Parser.Types Pugs.Parser.Unsafe Pugs.Parser.Export Pugs.Parser.Doc Pugs.Parser.Literal Pugs.Parser.Util Pugs.Pretty Pugs.Prim Pugs.Prim.Code Pugs.Prim.Eval Pugs.Prim.FileTest Pugs.Prim.Keyed Pugs.Prim.Lifts Pugs.Prim.List Pugs.Prim.Match Pugs.Prim.Numeric Pugs.Prim.Param Pugs.Prim.Yaml Pugs.Rule Pugs.Run Pugs.Run.Args Pugs.Run.Perl5 Pugs.Shell Pugs.Types Pugs.Version Emit.Common Emit.PIR Emit.PIR.Instances Pugs.Val Pugs.Val.Code Pugs.Val.Base Pugs.Exp MO.Util MO.Base MO.Compile MO.Run MO.Compile.Attribute MO.Compile.Role MO.Compile.Class 
    1515buildable: True 
    1616c-sources: src/pcre/pcre.c __PERL5_C__ 
  • src/Pugs/AST/Internals.hs

    r15374 r15393  
    101101import Pugs.AST.SIO 
    102102import Pugs.Embed.Perl5 
     103import Pugs.Meta () 
    103104import qualified Pugs.Val as Val 
    104105import qualified Data.ByteString.Char8 as Str 
     
    248249 
    249250toVV' :: Val -> Eval Val 
    250 toVV' VUndef   = return $ VV $ Val.val $ () 
    251 toVV' (VBool v)= return $ VV $ Val.val $ ((cast v) :: Val.PureBit) 
    252 toVV' (VInt v) = return $ VV $ Val.val $ ((cast v) :: Val.PureInt) 
    253 toVV' (VNum v) = return $ VV $ Val.val $ ((cast v) :: Val.PureNum) 
    254 toVV' (VRat v) = return $ VV $ Val.val $ ((cast v) :: Val.PureNum) 
    255 toVV' (VStr v) = return $ VV $ Val.val $ ((cast v) :: Val.PureStr) 
    256 toVV' x = error $ "don't know how to toVV': " ++ show x 
    257  
     251toVV' VUndef    = return . VV . Val.val $ () 
     252toVV' (VBool v) = return . VV . Val.val $ ((cast v) :: Val.PureBit) 
     253toVV' (VInt v)  = return . VV . Val.val $ ((cast v) :: Val.PureInt) 
     254toVV' (VNum v)  = return . VV . Val.val $ ((cast v) :: Val.PureNum) 
     255toVV' (VRat v)  = return . VV . Val.val $ ((cast v) :: Val.PureNum) 
     256toVV' (VStr v)  = return . VV . Val.val $ ((cast v) :: Val.PureStr) 
     257toVV' x         = fail $ "don't know how to toVV': " ++ show x 
    258258 
    259259getArrayIndex :: Int -> Maybe (IVar VScalar) -> Eval IArray -> Maybe (Eval b) -> Eval (IVar VScalar) 
  • src/Pugs/Class.hs

    r15384 r15393  
    1414module Pugs.Class 
    1515    ( module Pugs.Class 
     16    , module Pugs.AST.Eval 
    1617    , module MO.Run 
    1718    , module MO.Compile 
     
    8889(./) :: (Typeable1 m, Monad m) => Invocant m -> ID -> m (Invocant m) 
    8990inv ./ meth = ivDispatch inv $ MkMethodInvocation meth (mkArgs []) 
     91 
     92type PureClass = MI Eval 
     93 
     94instance Boxable Eval PureClass where 
     95    classOf _ = _PureClass 
     96 
     97_PureClass :: PureClass 
     98_PureClass = mkBoxClass "Class" 
     99    [ "HOW"         ... (const _PureClass :: PureClass -> PureClass) 
     100    ] 
     101 
  • src/Pugs/Meta.hs

    r15391 r15393  
    22 
    33{-| 
    4     Perl 6 Metaclasses. 
     4    Perl 6 Meta-object definitions. 
    55 
    66>   And though I oft have passed them by, 
     
    1010-} 
    1111 
     12module Pugs.Meta 
     13    ( module Pugs.Meta.Str 
     14    , module Pugs.Meta.Class 
     15    ) where 
     16 
     17import Pugs.Meta.Str 
     18import Pugs.Meta.Class 
     19 
  • src/Pugs/Val.hs

    r15382 r15393  
    1414) where 
    1515import Pugs.Class 
    16 import Pugs.AST.Eval 
    1716import Pugs.Val.Code 
    1817import Pugs.Internals 
    1918import Text.PrettyPrint 
    20 import qualified Data.ByteString.Char8 as Str 
    2119 
    2220type Val = Invocant Eval 
     
    106104instance Boxable Eval PureBit 
    107105instance Boxable Eval ValCapt 
    108  
    109 type PureClass = MI Eval 
    110 instance Boxable Eval PureClass where 
    111     classOf _ = _PureClass 
    112  
    113 _PureClass :: PureClass 
    114 _PureClass = mkBoxClass "Class" 
    115     [ "HOW"         ... (const _PureClass :: PureClass -> PureClass) 
    116     ] 
    117  
    118 instance Boxable Eval PureStr where 
    119     classOf _ = _StrClass 
    120  
    121 _StrClass :: PureClass 
    122 _StrClass = mkBoxClass "Str" 
    123     [ "reverse"     ... (MkStr . Str.reverse . unStr) 
    124     , "HOW"         ... (const _StrClass) 
    125     ] 
    126106 
    127107{-