zerodds-lang-rules
Maps the common AST onto the language CSTs through rules that are data, not code: seesaw v2 rule specifications, comparable and checkable.
- Source: crates/lang-rules
- API docs: docs.rs/zerodds-lang-rules
Maps the common AST onto the language CSTs.
The rules are data, not code. A rule is a RuleV2 value: it names an L-side pattern over the model, an R-side pattern over a language CST, and the correspondences between them. It can be compared, serialised, and checked for completeness. Two languages' treatment of @optional is a diff between two values, not a reading of two separate emitters.
Rules are minimal and positive: small rules that compose, monotone and add-only, with no negative application conditions. One rule maps a struct to a type declaration; a second maps a member to a field; a third adds a derive. A single rule doing all three could not be reused for the members of a union.
The engine is the v2 layer of seesaw, seesaw_core::v2.
Command line
zerodds-idlc generate --lang <name> emits one language from the model; --lang all emits every one. The names: rust, c++, c, java, c#, python, typescript, go, ocaml, ada, d, elixir, julia, lua, nim, swift, zig, node, ada83, f#, kotlin. An unknown name lists the valid ones.
zerodds-idlc generate --lang c++ --out ./ ./character.idl
# → character.hpp
Command reference: idlc, zerodds-idlc(1). In a Cargo build, zerodds-build calls the same rules for Rust.
Position
- Reads
zerodds-astand the layout plans ofzerodds-ast-layout; fillszerodds-lang-cst, whichzerodds-lang-renderwrites out. - 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, and the C mode ofzerodds-idl-cpp(idl-c).
Specification
docs/specs/zerodds-lang-cst-1.0.md §2 to §4.
zerodds-lang-rules
Bildet den gemeinsamen AST über Regeln, die Daten sind und kein Code, auf die Sprach-CSTs ab: Regelspezifikationen nach seesaw v2, vergleichbar und prüfbar.
- Quelle: crates/lang-rules
- API-Docs: docs.rs/zerodds-lang-rules
Bildet den gemeinsamen AST auf die Sprach-CSTs ab.
Die Regeln sind Daten, kein Code. Eine Regel ist ein Wert vom Typ RuleV2: Sie nennt ein Muster der linken Seite über dem Modell, ein Muster der rechten Seite über einem Sprach-CST und die Entsprechungen zwischen beiden. Sie lässt sich vergleichen, serialisieren und auf Vollständigkeit prüfen. Wie zwei Sprachen @optional behandeln, ist ein Diff zwischen zwei Werten und nicht die Lektüre zweier getrennter Emitter.
Regeln sind minimal und positiv: kleine Regeln, die sich zusammensetzen, monoton und nur hinzufügend, ohne negative Anwendungsbedingungen. Eine Regel bildet einen Struct auf eine Typdeklaration ab, eine zweite einen Member auf ein Feld, eine dritte fügt ein Derive hinzu. Eine einzige Regel, die alle drei Schritte macht, ließe sich für die Member einer Union nicht wiederverwenden.
Die Engine ist die v2-Schicht von seesaw, seesaw_core::v2.
Kommandozeile
zerodds-idlc generate --lang <name> erzeugt eine Sprache aus dem Modell; --lang all erzeugt alle. Die Namen: rust, c++, c, java, c#, python, typescript, go, ocaml, ada, d, elixir, julia, lua, nim, swift, zig, node, ada83, f#, kotlin. Ein unbekannter Name listet die gültigen auf.
zerodds-idlc generate --lang c++ --out ./ ./character.idl
# → character.hpp
Befehlsreferenz: idlc, zerodds-idlc(1). In einem Cargo-Build ruft zerodds-build dieselben Regeln für Rust auf.
Stellung
- Liest
zerodds-astund die Layoutpläne vonzerodds-ast-layout; fülltzerodds-lang-cst, daszerodds-lang-renderausschreibt. - 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-javaund den C-Modus vonzerodds-idl-cpp(idl-c).
Spezifikation
docs/specs/zerodds-lang-cst-1.0.md §2 bis §4.