这是工作中的语言地图,不承诺历史 Showcase 里出现的每一个名称都是已发布、可移植 API。当前 parser/compiler 与正反测试才是精确 grammar 的来源。
1. app manifest
app 声明 app-level default、page/page discovery、order、override、wrapper 或 shell、locale 和 presentation 值。shell 与显式 wrapper 互斥。见 App、page 与 shell。
2. page source
page 内主要的 authoring form 是:
| 形式 | 作用 |
|---|---|
page | 命名 source page 及其 tree |
i18n {} | 声明该 page 的 inline locale table |
component / use | compile-time 可复用 composition |
include / partial / import | 由 resolver 支持的 source reuse,scope 限制不同 |
for | static array 的 compile-time 展开 |
| AUP node | 最终发出的语义 UI tree |
3. node common tail
大多数 node 编写会组合可选 ID、inline value、key=value props、children 以及一种 data/interaction clause:
from <path> # source
show if <condition> # presentation condition
on <event> -> <action> # 明确 event
-> <action> # 仅 action/button 的 click shorthand用 -> page <name> 做命名 page navigation;用 -> set <id> props|src|state ... 做受支持的 local update shorthand。value 是 data literal,不是任意 JavaScript expression。
4. 编译和检查
DSL 会编译成 AUP tree、app/page JSON compatibility material 和 inline locale table。format、lint、validate、可选 generate 与 blocklet check 各有职责;没有一条单独等于 browser/device acceptance。
arc dsl format . --check
arc dsl lint .
arc dsl validate .跨 renderer 的 primitive support 不应放在 grammar 页。它属于 Primitive 类型分类与证据,可以避免把方便的 DSL 拼法误写成通用设备支持。