Skip to content

KevinBatdorf/pinky-compiler

Repository files navigation

Release npm version npm downloads

Pinky Compiler

A fast, embeddable compiler for the Pinky scripting language. Compile Pinky code to WebAssembly and run it anywhere JavaScript runs.


Features

  • Compile Pinky source to WASM bytes
  • Run Pinky code in the browser or Node.js
  • TypeScript-first API
  • Tiny, dependency-free runtime

Install

npm install pinky-compiler

Usage

import { compileFromSource, init } from "pinky-compiler";

// 1. Compile Pinky source to WASM bytes
const source = `
  x := 5
  println "Hello, Pinky!"
  println x + 10
`;
const { bytes, error } = compileFromSource(source);

if (error) throw error;

// 2. Initialize the WASM runtime (once per app)
const { run } = await init();

// 3. Run the compiled program
const output = run(bytes);
console.log(output.join("")); // Hello, Pinky!\n15\n

API

compileFromSource(source: string)

Tokenizes, parses, and compiles Pinky source code to WASM.

  • Returns: { bytes: Uint8Array, error, meta }

init()

Initializes the WASM runtime and returns an object with a run function.

  • Returns: Promise<{ run: (bytes: Uint8Array) => string[] }>

run(bytes: Uint8Array)

Runs the compiled WASM program and returns output as an array of strings.


Advanced Usage

You can also use the lower-level building blocks:

import { tokenize, parse, compile, init } from "pinky-compiler";

const { tokens, error } = tokenize('println "hi"');
const { ast, error } = parse(tokens);
const { bytes, error } = compile(ast);
const { run } = await init();
run(bytes);

Types

All error classes and major types are exported:

import type {
    CompilerError,
    ParseError,
    TokenError,
    type AST,
    type Token,
    type CompileFromSourceResult,
    type RunFunction
} from "pinky-compiler";

Additionally, you can import the syntax types listed here.

About

An npm package for compiling pinky scripts

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 2

  •  
  •