zerodds-lang-render
Renders a language CST to text. Decides nothing: every decision sits in a rule and is therefore visible.
- Source: crates/lang-render
- API docs: docs.rs/zerodds-lang-render
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
- Writes out the trees of
zerodds-lang-cstthatzerodds-lang-rulesfills. - The three crates replace the former per-language generators
zerodds-idl-cpp,zerodds-idl-python,zerodds-idl-rust,zerodds-idl-ts,zerodds-idl-csharp,zerodds-idl-java.
Specification
zerodds-lang-render
Schreibt einen Sprach-CST als Text. Entscheidet nichts: Jede Entscheidung steht in einer Regel und ist deshalb sichtbar.
- Quelle: crates/lang-render
- API-Docs: docs.rs/zerodds-lang-render
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
- Schreibt die Bäume von
zerodds-lang-cstaus, diezerodds-lang-rulesfüllt. - Die drei Crates ersetzen die früheren Generatoren je Sprache
zerodds-idl-cpp,zerodds-idl-python,zerodds-idl-rust,zerodds-idl-ts,zerodds-idl-csharp,zerodds-idl-java.