@promptc/codegen
v0.0.2
Published
Codegen from promptc IR back to target output formats.
Readme
@promptc/codegen
The back end of the promptc compiler
— emits a surface-format string (markdown / XML / plain) from a typed
PromptIR defined in @promptc/ir.
Pairs with @promptc/parser
to complete the IR round-trip:
source ──parse──▶ PromptIR ──passes──▶ PromptIR' ──codegen──▶ source'Install
bun add @promptc/codegen
# or
npm install @promptc/codegenQuick API
import { codegen, toMarkdown, toXml, toPlain } from "@promptc/codegen";
import type { PromptIR } from "@promptc/ir";
declare const ir: PromptIR;
// Format-routed:
const md = codegen(ir, { to: "markdown" });
const xml = codegen(ir, { to: "xml" });
const plain = codegen(ir, { to: "plain" });
// Direct:
const md2 = toMarkdown(ir);
const xml2 = toXml(ir, { trailingNewline: false });
const plain2 = toPlain(ir);All entry points are pure functions of the IR argument: same IR + same options + same compiler version produces the same output bytes, bit-for-bit.
What's in here
codegen— top-level entry that dispatches byopts.to.toMarkdown— markdown emitter (# Headings, fenced blocks, bulleted instructions).toXml— XML emitter (<task>,<context>,<example>, etc.).toPlain— minimal plain-text emitter.
Round-trip property
For any IR produced by @promptc/parser, parse(codegen(ir, { to: fmt }), { format: fmt })
yields an IR semantically equivalent to ir (modulo whitespace
normalization documented in
DESIGN.md §5).
Links
- Main repo:
promptc - Design contract:
DESIGN.md - IR reference:
docs/IR.md
License
Apache-2.0. See LICENSE.
