Changeset 16333

Show
Ignore:
Timestamp:
05/17/07 23:13:29 (18 months ago)
Author:
audreyt
Message:

* More pad refactoring.

Location:
src/Pugs
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/AST/Internals.hs

    r16331 r16333  
    1717    SlurpLimit, -- VInt, Exp 
    1818     
     19    emptyPad, 
     20 
    1921    VRef(..), -- uses IVar 
    2022    VOpaque(..), -- uses Value 
     
    10421044    , subBody           :: !Exp         -- ^ Body of the closure 
    10431045    , subCont           :: !(Maybe (TVar VThunk)) -- ^ Coroutine re-entry point 
     1046    , subStarted        :: !(Maybe (TVar Bool))   -- ^ Whether START was run 
    10441047    , subTraitBlocks    :: !TraitBlocks 
    10451048    } 
     
    14111414newtype Pad = MkPad { padEntries :: Map Var PadEntry } 
    14121415    deriving (Eq, Ord, Typeable) 
     1416 
     1417{-| 
     1418An empty Pad with no symbols. 
     1419-} 
     1420 
     1421emptyPad :: Pad 
     1422emptyPad = MkPad Map.empty 
    14131423 
    14141424newtype EntryFlags = MkEntryFlags { ef_isContext :: Bool } 
  • src/Pugs/AST/Internals/Instances.hs

    r16331 r16333  
    513513    fromYAML MkNode{n_tag=Just t, n_elem=e} | 't':'a':'g':':':'h':'s':':':tag <- unpackBuf t = case tag of 
    514514        "MkCode" -> do 
    515             let liftM13 f m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 = do 
    516                 {x1 <- m1; x2 <- m2; x3 <- m3; x4 <- m4; x5 <- m5; x6 <- m6; x7 <- m7; x8 <- m8; x9 <- m9; x10 <- m10; x11 <- m11; x12 <- m12; x13 <- m13; return (f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)} 
    517             let ESeq [aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am] = e 
    518             liftM13 MkCode (fromYAML aa) (fromYAML ab) (fromYAML ac) (fromYAML ad) (fromYAML ae) (fromYAML af) (fromYAML ag) (fromYAML ah) (fromYAML ai) (fromYAML aj) (fromYAML ak) (fromYAML al) (fromYAML am) 
     515            let liftM16 f m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 = do 
     516                {x1 <- m1; x2 <- m2; x3 <- m3; x4 <- m4; x5 <- m5; x6 <- m6; x7 <- m7; x8 <- m8; x9 <- m9; x10 <- m10; x11 <- m11; x12 <- m12; x13 <- m13; x14 <- m14; x15 <- m15; x16 <- m16; return (f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16)} 
     517            let ESeq [aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap] = e 
     518            liftM16 MkCode (fromYAML aa) (fromYAML ab) (fromYAML ac) (fromYAML ad) (fromYAML ae) (fromYAML af) (fromYAML ag) (fromYAML ah) (fromYAML ai) (fromYAML aj) (fromYAML ak) (fromYAML al) (fromYAML am) (fromYAML an) (fromYAML ao) (fromYAML ap) 
    519519        _ -> fail $ "unhandled tag: " ++ show t ++ ", expecting " ++ show ["MkCode"] ++ " in node " ++ show e 
    520520    fromYAML _ = fail "no tag found" 
    521     asYAML (MkCode aa ab ac ad ae af ag ah ai aj ak al am) = 
     521    asYAML (MkCode aa ab ac ad ae af ag ah ai aj ak al am an ao ap) = 
    522522           asYAMLseq "MkCode" 
    523523           [asYAML aa, asYAML ab, asYAML ac, asYAML ad, asYAML ae, asYAML af, 
    524524            asYAML ag, asYAML ah, asYAML ai, asYAML aj, asYAML ak, asYAML al, 
    525             asYAML am] 
     525            asYAML am, asYAML an, asYAML ao, asYAML ap] 
    526526 
    527527instance YAML TraitBlocks where 
     
    609609    asYAML (NonTerm aa) = asYAMLseq "NonTerm" [asYAML aa] 
    610610 
     611instance YAML LexPads where 
     612    fromYAML MkNode{n_tag=Just t, n_elem=e} | 't':'a':'g':':':'h':'s':':':tag <- unpackBuf t = case tag of 
     613        "PRuntime" -> do 
     614            let ESeq [aa] = e 
     615            liftM PRuntime (fromYAML aa) 
     616        "PCompiling" -> do 
     617            let ESeq [aa] = e 
     618            liftM PCompiling (fromYAML aa) 
     619        _ -> fail $ "unhandled tag: " ++ show t ++ ", expecting " ++ show ["PRuntime","PCompiling"] ++ " in node " ++ show e 
     620    fromYAML _ = fail "no tag found" 
     621    asYAML (PRuntime aa) = asYAMLseq "PRuntime" [asYAML aa] 
     622    asYAML (PCompiling aa) = asYAMLseq "PCompiling" [asYAML aa] 
     623 
    611624instance YAML InitDat where 
    612625    fromYAML MkNode{n_tag=Just t, n_elem=e} | 't':'a':'g':':':'h':'s':':':tag <- unpackBuf t = case tag of 
  • src/Pugs/AST/Pad.hs

    r16329 r16333  
    1010import qualified Data.Map as Map 
    1111import qualified Data.Set as Set 
     12 
     13instance Monoid Pad where 
     14    mempty  = emptyPad 
     15    mappend = unionPads 
     16    mconcat = MkPad . Map.unionsWith mergePadEntry . map padEntries 
    1217 
    1318{-| 
  • src/Pugs/Parser.hs

    r16331 r16333  
    12731273            , subBody       = fun 
    12741274            , subCont       = Nothing 
     1275            , subTraitBlocks= bi_traits block emptyTraitBlocks 
    12751276            } 
    12761277    return (Syn "sub" [Val $ VCode sub])