Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

附录 · 术语对照

这是 xrune 的中世纪词系与寻常编译器/计算机术语之间的契约。后续诸章一旦有「比喻像是飘离工程含义」之险,便回此处校核。

命名契约

原词译名工程含义
sigil印玺一个 derive 宏 crate(xrune-sigil)。DsRef derive 为目标 struct 锻造 {Name}Ref newtype,内里是 Rc<RefCell<Name>>
nexus中枢核心 crate(xrune-nexus)。AST 节点类型、DsRune trait、decipher 遍历器,皆在此。其余 crate 都向这里收束。
incant咒坛过程宏 crate(xrune-incant),导出 ui! { … }。咏唱即调起 DSL 的动作。
rune符文师DsRune trait 的一个后端实现。把解析出的树翻成最终代码。咒文只一道;符文师可有许多种译法。
decipher译咒自由函数 xrune::ds_rune::decipher::decipher(tree, &mut rune)。遍历 DsTree,对每个节点调一次符文师的 inscribe 方法。
inscribe刻录DsRune 上的方法之一:inscribe_root / inscribe_widget / inscribe_if / inscribe_iter / inscribe_niche / inscribe_match。每个收下一个节点,将产出累积进符文师内部。
seal封印trait 方法 seal(self) -> TokenStream。译咒走完,封印一道,把符文师内累积之物收束为最终发出的代码。注意:不是 Rust 的「sealed trait」习语,同名不同义。
enchant附魔部件后附的方括号表达式串 [expr, expr, …]。任意数据,由符文师挂到节点上:典型用法是 ECS 组件或附着状态。
niche壁龛@name { … } 节点。一处具名锚位 / 插槽 / 命名区域,由宿主符文师路由(如 portal、命名端口)。
walk … with …巡历 … 取 …迭代。walk iterable with var { … } 是 xrune 的 for 循环。
on事件咒符部件后附的事件处理子句:on EventKind { … }(带体形态)或 on EventKind(cb)(回调形态)。
scribe誊章格式化器二进制 xrune-fmt。把 ui! { … } 块经真实 parser 来回誊写一次。
grimoire魔典你正在读的这本文档站。
codex流变志版本流变史(CHANGELOG)。

DSL 咏唱形态摘要

形态名号解读
:( ... :)(每个属性独占一行)上下文区parent 必填;其余键由符文师定义(worldtheme…)。
Widget (k: v) { … }部件・带属性带体带具名属性与子节点的部件。
Widget (Text("hi"))部件・位置属性带位置属性的部件。可不带 body。
Widget (k: v) [Comp{…}, Tag] { … }部件・附魔同上,附魔写在属性与 body 之间。
if expr { … }条件条件渲染。
walk it with x { … }巡历迭代。
@slot { … }壁龛具名锚位。
match e { Pat => { … } … }模式匹配跨子树的模式匹配。
Widget () {} on Tap { fire() }事件咒符・形态 Bon 在 body 之后,附着到前一个兄弟部件。
Widget () on Tap { … } { … }事件咒符・形态 Con 在属性与 body 之间,附着到本部件。
on Tap(cb)事件咒符・回调回调形态。cb 是末尾参数,由符文师决定语义。

公开 API 索引

每位读者只需扫一次的最小面:

Crate名号公开面
xrune-sigil印玺#[derive(DsRef)]
xrune-nexus中枢ds_node::*Ds* AST 类型族)· ds_rune::DsRune trait · ds_rune::decipher::decipher · pub use xrune_sigil::DsRef
xrune-incant咒坛#[proc_macro] pub fn ui
xrunepub mod default_rune; · pub use xrune_incant::ui; · pub use xrune_nexus::*;
xrune-fmt誊章xrune-fmt <file.rs> [--check](二进制)