Changeset 22186
- Timestamp:
- 09/07/08 22:26:47 (3 months ago)
- Files:
-
- 1 modified
-
src/Pugs/CodeGen/M0ld.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/CodeGen/M0ld.hs
r22179 r22186 18 18 emit :: a -> [Char] -> State Int [Char] 19 19 20 lexicalPrelude = "my $interpreter;\n" 21 ++ "my $scope;\n" 22 ++ "my $void;\n" 23 ++ "my $Code_scalar = $scope.\"postcircumfix:{ }\"(\"Code\");\n" 24 ++ "my $Code = $Code_scalar.\"FETCH\"();\n" 25 20 26 instance EmitM0ld PIL_Environment where 21 emit env r = emit (pilMain env) r 27 emit env r = do 28 main <- emit (pilMain env) r 29 return $ lexicalPrelude ++ main 22 30 instance EmitM0ld PIL_Stmts where 23 31 emit statement r = case statement of … … 27 35 PStmts{pStmt=stmt,pStmts=rest} -> do 28 36 stmt <- emit stmt void 29 rest <- emit rest void37 rest <- emit rest r 30 38 return $ stmt ++ rest 31 39 … … 42 50 ret <- uniqueId 43 51 body <- emit body ret 44 return ("my " ++ r ++ " = $Code.\"new\"(mold {\n" 52 return ("my " ++ r ++ " = $Code.\"new\"(:\"outer\"($scope),:\"mold\"(mold {\n" 53 ++ lexicalPrelude 45 54 ++ body 46 55 ++ void ++ " = $interpreter.\"return\"(" ++ ret ++ ");\n" 47 ++ "}) ;\n")56 ++ "}));\n") 48 57 PLit {pLit=lit} -> emit lit r 49 58 other -> placeholder other r
