on master help sign in
javascript: added print function
commit1b87e09f0a8bd5032c8a0bff27d34fee0dfdbfaa authorraichoo <raichoo@googlemail.com> dateSat 12 Jan 2013, 00:11 (14 years ago) parentc03e1b2
1 file changed+12−2
src/IRTS/CodegenJavaScript.hs+12−2
src/IRTS/CodegenJavaScript.hs+12−2
@@ -47,9 +47,12 @@ idrRuntime :: String
4747idrRuntime =
4848 createModule Nothing idrNamespace $ concat
4949 [ "__IDR__.IntType = { type: 'IntType' };"
50+
5051 , "__IDR__.Tailcall = function(f) { this.f = f };"
52+
5153 , "__IDR__.Con = function(i,name,vars)"
5254 , "{this.i = i;this.name = name;this.vars = vars;};\n"
55+
5356 , "__IDR__.tailcall = function(f){\n"
5457 ++ "var __f = f;\n"
5558 ++ "while (__f) {\n"
@@ -62,7 +65,14 @@ idrRuntime =
6265 ++ "return ret;"
6366 ++ "\n}"
6467 ++ "\n}"
65− ++ "\n}"
68+ ++ "\n};\n"
69+
70+ , "var newline_regex =/(.*)\\n$/;\n"
71+
72+ , "__IDR__.print = function(s){\n"
73+ ++ "var m = s.match(newline_regex);\n"
74+ ++ "console.log(m ? m[1] : s);"
75+ ++ "\n};\n"
6676 ]
6777
6878createModule :: Maybe String -> NamespaceName -> String -> String
@@ -281,7 +291,7 @@ translateExpression _ (SError msg) =
281291 "(function(){throw \'" ++ msg ++ "\';})();"
282292
283293translateExpression _ (SForeign _ _ "putStr" [(FString, var)]) =
284− "console.log(" ++ translateVariableName var ++ ");"
294+ "__IDR__.print(" ++ translateVariableName var ++ ");"
285295
286296translateExpression _ (SForeign _ _ fun args) =
287297 fun