UNPKG

ocat-lang

Version:

A programming language for the web design and development

59 lines (58 loc) 1.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.rund = rund; exports.init = init; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const runner_1 = require("./runner/"); const memory_1 = require("./memory"); const error_1 = require("./error"); function rund(test, dev, content) { if (test) { console.time("Lexer"); } const tokens = (0, runner_1.tokenize)(content); if (dev) { console.log(tokens); } if (test) { console.timeEnd("Lexer"); console.time("Parser"); } const nodes = (0, runner_1.parse)(tokens); if (dev) { console.log(nodes); } if (test) { console.timeEnd("Parser"); console.time("Runner"); } const memory = (0, runner_1.run)(nodes); if (test) { console.timeEnd("Runner"); } return memory; } function init(test, dev, fileName) { if (test) { console.time("Start"); } if (!fileName || !fileName.endsWith(".ocat")) { console.error("Please provide a valid file name."); process.exit(1); } const filePath = path_1.default.join(process.cwd(), fileName); // @Flag let memory = new memory_1.Memory(); if (!fs_1.default.existsSync(filePath)) { new error_1.CustomError(`File ${fileName} not found.`, error_1.ErrorType.RuntimeError).display(0); } fs_1.default.readFile(filePath, "utf8", (err, data) => (memory = rund(test, dev, data))); if (test) { console.timeEnd("Start"); } return memory; }