Home Reference Source Test

lib/parser/json2AST.js

const { Value, Word, Apply, Regex } = require("../interp/ast.js");
const utils = require("../utils.js");

const json2AST = tree => {
  let obj = null;

  if (tree.type == "apply") {
    obj = new Apply(tree);
    obj.operator = json2AST(tree.operator);
    obj.args = tree.args.map(arg => json2AST(arg));
  } else if (tree.type == "word") {
    obj = new Word(tree);
    obj.name = tree.name;
  } else if (tree.type == "value") {
    obj = new Value(tree);
  } else if (tree.type == "regex") {
    obj = new Regex(tree);
    obj.body = tree.body;
    obj.flags = tree.flags;
  } else {
    throw new SyntaxError(`Unrecognized token ${utils.ins(tree)}`);
  }

  return obj;
};

module.exports = {
  json2AST
};