zerodds-lang-render

Renders a language CST to text. Decides nothing: every decision sits in a rule and is therefore visible.

Turns a language CST into text.

The renderer decides nothing. It does not consult the common AST, it does not branch on anything but the node in hand, and it never inserts a construct that is not in the tree. Every decision about what generated code contains sits in a rule, where it can be compared with the same rule for another language.

Each language renders in one documented style — Rust as rustfmt would, C++ and C in the brace style the previous emitters used, Java in the Oracle convention. Style is not configurable; a downstream formatter is the place for that.

This is the one crate where a String appears, and it appears only at the leaves.

Position

Specification

docs/specs/zerodds-lang-cst-1.0.md §5.

zerodds-lang-render

Schreibt einen Sprach-CST als Text. Entscheidet nichts: Jede Entscheidung steht in einer Regel und ist deshalb sichtbar.

Macht aus einem Sprach-CST Text.

Der Renderer entscheidet nichts. Er fragt den gemeinsamen AST nicht ab, verzweigt nur nach dem Knoten, den er gerade hat, und fügt nie ein Konstrukt ein, das nicht im Baum steht. Jede Entscheidung darüber, was erzeugter Code enthält, steht in einer Regel, wo sie sich mit derselben Regel für eine andere Sprache vergleichen lässt.

Jede Sprache wird in einem dokumentierten Stil geschrieben — Rust so, wie rustfmt es täte, C++ und C im Klammerstil der früheren Emitter, Java nach der Oracle-Konvention. Der Stil ist nicht einstellbar; dafür ist ein nachgelagerter Formatierer da.

Dies ist die einzige Crate, in der ein String vorkommt, und er kommt nur an den Blättern vor.

Stellung

Spezifikation

docs/specs/zerodds-lang-cst-1.0.md §5.