git @ Cat's Eye Technologies Cosmos-Boulders / master contrib / jaft-0.2 / jaftConcoctor.js
master

Tree @master (Download .tar.gz)

jaftConcoctor.js @masterraw · history · blame

// Copyright (c) 2026 Chris Pressey, Cat's Eye Technologies.
//
// SPDX-License-Identifier: LicenseRef-MIT-X-Jaft

import { concoct } from "../concoctor-0.2/concoctor.js";  // TODO: use import map
import { Scanner, Parser, compile } from "./jaftCompiler.js";

function concoctJaft(ctx, body, attributes) {
  const extraAttributes = {
    parseFunDefn: function (body) {
      const scanner = new Scanner(body);
      const parser = new Parser(scanner);
      const ast = parser.parseFunDefn();
      const params = ast.type === "fun-defn" ? ast.params : [];
      return [ast, params];
    },
    compile: compile,
  };
  return concoct(ctx, body, { ...attributes, ...extraAttributes });
}

export { concoctJaft };