@tsukiroku/tiny
Version:
Tiny interpreter
41 lines (40 loc) • 1.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const evaluator_1 = require("./tiny/evaluator");
const index_1 = __importDefault(require("./index"));
const express_1 = __importDefault(require("express"));
const app = (0, express_1.default)();
app.listen(5050, () => console.log('http://localhost:5050'));
app.get('/eval', (req, res) => {
res.header('Content-Type', 'application/json');
res.header('Access-Control-Allow-Origin', '*');
res.json({
result: [],
errors: [],
});
});
app.get('/eval/:code', (req, res) => {
const result = [];
const errors = [];
const tiny = new index_1.default(req.params.code, {
useStdLibAutomatically: true,
allowEval: true,
stderrPrefix: false,
stderrColor: false,
})
.setStdout((x) => result.push(x))
.setStderr((x) => errors.push(x))
.setStdin(() => evaluator_1.NULL);
const parsed = tiny.parseProgram();
tiny.evalProgram(parsed);
res.header('Content-Type', 'application/json');
res.header('Access-Control-Allow-Origin', '*');
res.json({
result,
errors,
ast: parsed,
});
});