Browse Source

improve repl

master
wes 7 years ago
parent
commit
79260879e9
  1. 23
      server/repl.js
  2. 6
      server/vm.js

23
server/repl.js

@ -6,13 +6,32 @@ import vm from "./vm.js";
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: 'OHAI> '
prompt: 'λ '
});
rl.prompt();
var last;
rl.on('line', (line) => {
console.log(vm.evaluateString(line));
try {
if (line.trim().length == 0) {
rl.prompt();
}
else {
last = vm.evaluateString(line);
if (last == undefined) {
rl.prompt();
}
else {
console.log(last);
vm.env.bindings["it"] = last;
}
}
}
catch (e) {
console.log(e.errormessage);
}
rl.prompt();
}).on('close', () => {
console.log('Bye');

6
server/vm.js

@ -90,6 +90,9 @@ function evaluate(ast, environment) {
else if (ast.exprType === "Name") {
return lookup(ast.ident, environment);
}
else if (ast.exprType === "Bool") {
return ast.val;
}
else if (ast.exprType === "If") {
if (evaluate(ast.condition, environment)) {
return evaluate(ast.thenexp, environment);
@ -117,5 +120,6 @@ function evaluate(ast, environment) {
}
export default {
evaluateString : evaluateString
evaluateString : evaluateString,
env : testenv
};

Loading…
Cancel
Save