on master help sign in
javascript: add LReadStr primitive to node backend
b26d401raichoo
jsrts/Runtime-node.js+19
@@ -5,6 +5,25 @@ var i$putStr = (function() {
5 };
5 };
6})();
6})();
7
7
8+var i$getLine = (function() {
9+ var fs = require( "fs" )
10+
11+ return function() {
12+ var ret = "";
13+
14+ while(true) {
15+ var b = new Buffer(1);
16+ fs.readSync(0, b, 0, 1 )
17+ if (b[0] == 10)
18+ break;
19+ else
20+ ret += String.fromCharCode(b[0]);
21+ }
22+
23+ return ret;
24+ };
25+})();
26+
8var i$systemInfo = function(index) {
27var i$systemInfo = function(index) {
9 var os = require('os')
28 var os = require('os')
10 switch(index) {
29 switch(index) {
src/IRTS/CodegenJavaScript.hs+3−2
@@ -675,8 +675,9 @@ jsOP _ reg op args = JSAssign (translateReg reg) jsOP'
675 | LNoOp <- op = translateReg (last args)
675 | LNoOp <- op = translateReg (last args)
676
676
677 | LWriteStr <- op,
677 | LWriteStr <- op,
678− (_:str:_) <- args = JSAssign (translateReg reg)
679− (JSApp (JSIdent "i$putStr") [translateReg str])
678+ (_:str:_) <- args = JSApp (JSIdent "i$putStr") [translateReg str]
679+
680+ | LReadStr <- op = JSApp (JSIdent "i$getLine") []
680
681
681 | (LZExt (ITFixed IT8) ITNative) <- op = jsUnPackBits $ translateReg (last args)
682 | (LZExt (ITFixed IT8) ITNative) <- op = jsUnPackBits $ translateReg (last args)
682 | (LZExt (ITFixed IT16) ITNative) <- op = jsUnPackBits $ translateReg (last args)
683 | (LZExt (ITFixed IT16) ITNative) <- op = jsUnPackBits $ translateReg (last args)