From 44a215e1796bf011a30ed32998df0cd723972ad1 Mon Sep 17 00:00:00 2001 From: jgjanes Date: Thu, 28 Apr 2022 21:21:27 -0700 Subject: [PATCH] Added Command line separatable code Co-Authored-By: Joseph Hale <47901316+jhale1805@users.noreply.github.com> Co-Authored-By: Sai Nishanth Vaka Co-Authored-By: Rithvik Arun <43283635+rarun321@users.noreply.github.com> --- src/runtime/command_line_executable.js | 72 ++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/runtime/command_line_executable.js diff --git a/src/runtime/command_line_executable.js b/src/runtime/command_line_executable.js new file mode 100644 index 0000000..d3cac94 --- /dev/null +++ b/src/runtime/command_line_executable.js @@ -0,0 +1,72 @@ +const fs = require('fs'); +const tokenizer = require('/ide') +const tau_prolog = require('/tau-prolog') + +function readFileLoad(fileName, callback){ + + return callback(data); +} + +function tokenizeExecute(fileName){ + fs.readFile(fileName, 'utf8', (err, data) => { + if (err) { + console.error(err); + return; + } + console.log(data); + }); + let session = pl.create(); + session.consult(intermediateCode, { + success: () => { + console.log("[INFO] Loaded interpreter source code"); + loadQueryEx(session); + }, + error: (err) => { + console.log("[ERROR] Failed to load interpreter source code"); + console.log(err); + }, + }); +} + +// Create the query (parse the query). +function loadQueryEx(session, programText) { + var tokens = tokenizer.tokenizer(programText); + var formattedTokens = JSON.stringify(tokens).replaceAll('"', ""); + var completeQuery = `program(P, ${formattedTokens}, []), write(P), eval(P, [], EnvOut, ValueOut).`; + console.log(completeQuery); + session.query(completeQuery, { + success: function (goal) { + /* Goal parsed correctly */ + console.log("Successfully parsed query!"); + console.log(goal); + findAnswerEx(session); + }, + error: function (err) { + console.log("[ERROR] Failed to parse query"); + console.log(err); + }, + }); + } + + function findAnswerEx(session) { + // Execute the query (execute the goal). + session.answer({ + success: function (answer) { + writeOutput(session.format_answer(answer)); + console.log(answer); // {X/apple} + }, + error: function (err) { + /* Uncaught error */ + console.log("Error: " + err); + }, + fail: function () { + /* No more answers */ + console.log("No more answers!"); + }, + limit: function () { + /* Limit exceeded */ + console.log("Limit exceeded!"); + }, + }); + } + \ No newline at end of file -- 2.51.2