Changeset 7035 for src/Pugs/Prim.hs
- Timestamp:
- 09/17/05 22:55:58 (3 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim.hs
r6918 r7035 598 598 VRule MkRulePCRE{rxAdverbs=hash} -> return hash 599 599 _ -> fail $ "Not a rule: " ++ show v 600 op1 "Pugs::Internals::current_pragma_value" = \v -> do 601 name <- fromVal v 602 prags <- asks envPragmas 603 return $ findPrag name prags 604 where 605 findPrag :: String -> Pragmas -> Val 606 findPrag _ PrNil = VUndef 607 findPrag n PrPrags {pragma=this, pragmas=rest} 608 | n == pragName this = VInt $ toInteger $ pragDat this 609 | otherwise = findPrag n rest 610 op1 "Pugs::Internals::caller_pragma_value" = \v -> do 611 caller <- asks envCaller 612 case caller of 613 Just env -> local (const env) (op1 "Pugs::Internals::current_pragma_value" v) 614 _ -> return $ VUndef 600 615 op1 other = \_ -> fail ("Unimplemented unaryOp: " ++ other) 601 616 … … 927 942 op2 "IO::print" = op2Print hPutStr 928 943 op2 "BUILDALL" = op1WalkAll reverse "BUILD" 944 op2 "Pugs::Internals::install_pragma_value" = \x y -> do 945 name <- fromVal x 946 val <- fromVal y 947 idat <- asks envInitDat 948 idatval <- liftSTM $ readTVar idat 949 trace ("installing " ++ name ++ "/" ++ (show val)) $ return () 950 let prag = initPragmas idatval 951 liftSTM $ writeTVar idat idatval{initPragmas = 952 prag ++ [MkPrag{ pragName=name, pragDat=val }]} 953 return (VBool True) 929 954 op2 other = \_ _ -> fail ("Unimplemented binaryOp: " ++ other) 930 955 … … 1678 1703 \\n Str pre Pugs::Internals::rule_pattern safe (Pugs::Internals::VRule)\ 1679 1704 \\n Hash pre Pugs::Internals::rule_adverbs safe (Pugs::Internals::VRule)\ 1705 \\n Int pre Pugs::Internals::install_pragma_value safe (Str, Int)\ 1706 \\n Bool pre Pugs::Internals::current_pragma_value safe (Str)\ 1707 \\n Bool pre Pugs::Internals::caller_pragma_value safe (Str)\ 1680 1708 \\n"
