Changeset 6594
- Timestamp:
- 08/30/05 22:57:49 (3 years ago)
- Files:
-
- 5 modified
-
perl5/PIL2JS/lib6/Prelude/JS.pm (modified) (1 diff)
-
src/Pugs/AST.hs (modified) (1 diff)
-
src/Pugs/Compile.hs (modified) (1 diff)
-
src/Pugs/Eval.hs (modified) (1 diff)
-
src/Pugs/Parser.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
perl5/PIL2JS/lib6/Prelude/JS.pm
r6563 r6594 108 108 })')($sigil ~ join "::", @parts); 109 109 } 110 111 112 # XXX PIL1 pugs -C kludge. 113 sub Package::_create($name) {} 114 sub Module::_create($name) {} 115 sub Class::_create($name) {} 116 sub Rule::_create($name) {} 117 sub Grammar::_create($name) {} -
src/Pugs/AST.hs
r5836 r6594 124 124 mergeStmts (Sym scope name x) y = Sym scope name (mergeStmts x y) 125 125 mergeStmts (Pad scope lex x) y = Pad scope lex (mergeStmts x y) 126 mergeStmts (Syn "package" [ pkg@(Val (VStr _))]) y =127 Syn "namespace" [ pkg, y]126 mergeStmts (Syn "package" [kind, pkg@(Val (VStr _))]) y = 127 Syn "namespace" [kind, pkg, y] 128 128 mergeStmts x@(Pos pos (Syn syn _)) y | (syn ==) `any` words "subst match //" = 129 129 mergeStmts (Pos pos (App (Var "&infix:~~") Nothing [Var "$_", x])) y -
src/Pugs/Compile.hs
r6589 r6594 167 167 tailCall (PPos pos exp x) = PPos pos exp (tailCall x) 168 168 tailCall x = x 169 Stmts this (Syn "namespace" [Val (VStr pkg), rest]) -> do169 Stmts this (Syn "namespace" [Val (VStr sym), Val (VStr pkg), rest]) -> do 170 170 thisC <- enter cxtVoid $ compile this 171 declC <- enter cxtVoid $ compile decl 171 172 restC <- enterPackage pkg $ compileStmts rest 172 return $ PStmts thisC restC 173 return $ PStmts thisC $ PStmts declC restC 174 where 175 -- XXX - kludge. 176 decl = App (Var func) Nothing [(Val (VStr pkg))] 177 func = "&" ++ (capitalize sym) ++ "::_create" 178 capitalize [] = [] 179 capitalize (c:cs) = toUpper c:cs 180 173 181 Stmts this rest -> do 174 182 thisC <- enter cxtVoid $ compile this -
src/Pugs/Eval.hs
r6581 r6594 688 688 retEmpty 689 689 690 reduceSyn "package" [ exp] = reduceSyn "namespace" [exp, emptyExp]691 692 reduceSyn "namespace" [ exp, body] = do690 reduceSyn "package" [kind, exp] = reduceSyn "namespace" [kind, exp, emptyExp] 691 692 reduceSyn "namespace" [_kind, exp, body] = do 693 693 val <- evalExp exp 694 694 str <- fromVal val -
src/Pugs/Parser.hs
r6530 r6594 315 315 rulePackageBlockDeclaration :: RuleParser Exp 316 316 rulePackageBlockDeclaration = rule "package block declaration" $ do 317 (_, pkgVal, env) <- try $ do317 (_, kind, pkgVal, env) <- try $ do 318 318 rv <- rulePackageHead 319 319 lookAhead (char '{') … … 322 322 env' <- getRuleEnv 323 323 putRuleEnv env'{ envPackage = envPackage env } 324 return $ Syn "namespace" [ pkgVal, body]324 return $ Syn "namespace" [kind, pkgVal, body] 325 325 326 326 rulePackageDeclaration :: RuleParser Exp 327 327 rulePackageDeclaration = rule "package declaration" $ try $ do 328 (_, pkgVal, _) <- rulePackageHead329 return $ Syn "package" [ pkgVal]330 331 rulePackageHead :: RuleParser (String, Exp, E nv)328 (_, kind, pkgVal, _) <- rulePackageHead 329 return $ Syn "package" [kind, pkgVal] 330 331 rulePackageHead :: RuleParser (String, Exp, Exp, Env) 332 332 rulePackageHead = do 333 333 sym <- choice $ map symbol (words "package module class role grammar") … … 349 349 envClasses = envClasses env `addNode` mkType name } 350 350 let pkgVal = Val . VStr $ name -- ++ v ++ a 351 return (name, pkgVal, env) 351 kind = Val . VStr $ sym 352 return (name, kind, pkgVal, env) 352 353 353 354 ruleSubDeclaration :: RuleParser Exp
