Skip to main content

zerodds_lang_rules/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3//! Crate `zerodds-lang-rules`. Safety classification: **SAFE**.
4//!
5//! The common AST onto the language CSTs, through rules that are data.
6//!
7//! A rule is a value: comparable, serialisable, and checkable for
8//! completeness. Two languages' treatment of `@optional` is a diff, not
9//! a reading of two emitters three thousand lines apart.
10//!
11//! ## Spec
12//!
13//! - `docs/specs/zerodds-lang-cst-1.0.md` §2, §3, §4.
14//!
15//! ## The engine
16//!
17//! `seesaw-tgg` 2.0 — the positive-only, NAC-free rule layer, released.
18//! A version dependency rather than a path: a path builds only on the
19//! machine that wrote it.
20//!
21//! ## Layer position
22//!
23//! Layer 2 of the backend arc — over `zerodds-ast` and
24//! `zerodds-lang-cst`.
25#![forbid(unsafe_code)]
26
27pub mod adapter;
28pub mod apply;
29pub mod coverage;
30pub mod decode_c;
31pub mod decode_cpp;
32pub mod decode_java;
33pub mod default_ada;
34pub mod default_ada83;
35pub mod default_c;
36mod default_common;
37pub mod default_cpp;
38pub mod default_csharp;
39pub mod default_d;
40pub mod default_elixir;
41pub mod default_fsharp;
42pub mod default_go;
43pub mod default_java;
44pub mod default_julia;
45pub mod default_kotlin;
46pub mod default_lua;
47pub mod default_nim;
48pub mod default_node;
49pub mod default_ocaml;
50pub mod default_python;
51pub mod default_rust;
52pub mod default_swift;
53pub mod default_typescript;
54pub mod default_zig;
55pub mod emit;
56pub mod encode;
57pub mod encode_c;
58mod fixed_literal;
59pub mod generate;
60pub mod rule;
61mod rust_union;
62pub mod verbatim;
63
64pub use adapter::ast::{ModelGraph, NodeRef};
65pub use apply::{Applied, apply};
66pub use coverage::{ConstructKind, Coverage, coverage_of};