2个版本
0.2.1 | 2019年7月9日 |
---|---|
0.2.0 | 2019年7月9日 |
#121 in #dsl
用于 s-crap
68KB
2K SLoC
Scdlang
Statecharts Description Language
🚧状态: 🗶实验性 4ever🤞
关于
Scdlang(发音为 /ˈesˌsi:ˈdi:ˈlæŋ/
)是一种描述状态图的描述语言,以后可以用来生成代码或将它转换成其他格式。该项目更专注于如何描述通用状态图,以便可以在其他语言/平台上使用,而不是绘制状态图。关于绘图,请参阅状态机猫。
哲学
- 可读性就像您阅读并可视化状态图一样
- 可编写性就像您编写简洁、清晰且可重构的代码一样
- 可移植性到任何实现(例如平台、编程语言、运行时等)
功能和愿望清单
- CLI工具(请参阅用法)
- 语法受到各种绘图语言(如mermaid、Graphviz、PlantUML等)的启发
- 合理的错误信息
- 通过语义分析避免无效和歧义性转换
- 用于静态分析和形式验证的规则定义
- 转换成其他格式
- 编译成其他格式(需要它成为可嵌入的DSL)
- WebAssembly(使用parity-wasm)
- LLVM IR 🤔(打开编译成wasm、dynlib和静态lib的可能性)
- 代码生成 🤔(不确定是否需要,但为什么不呢?)
- 通过
@generated
实现的Julia,作为参数化 多重派发 函数对象 - Rust 通过
#[proc_macro_attribute]
实现,作为 类型状态编程?(我仍然担心它是否会与另一个 crates 冲突) - Elixir 通过
use
宏,它转换为 gen_statem 💪 - Flutter 通过
builder_factories
(等待 FFI 稳定)
- 通过
更多信息,请参阅 发布页面 的变更日志
入门指南
目前,此项目仅为每个操作系统提供二进制 CLI。请访问 发布页面 下载并提取它。它还附带您首选 shell 的自动完成脚本。
安装
只需从 发布页面 下载二进制文件或按照以下说明操作 👇
Linux🐧
待办事项:(AUR、DEB、RPM)或通过类似于安装 rustup 的 shell 脚本安装
MacOS🍏
待办事项:brew 或通过类似于安装 rustup 的 shell 脚本安装
Windows🗔
待办事项:chocolatey 或通过类似于安装 rustup 的 msi 安装程序安装
使用 Docker🐳
smcat、dot 和 graph-easy 已预安装在 Docker 映像中
docker pull scdlang/scrap
通过 Cargo📦
cargo install s-crap
贡献
只要遵循 行为准则,任何贡献都受欢迎。
如果您有任何问题或需要讨论的内容,请随时在拥有我的头像的任何平台上私信或提及我 👹。
许可证
此项目采用通用许可 1.0 许可 - 更多详细信息,请参阅 LICENSE 文件。
资源
- Statecharts in the Making: A Personal Account by David Harel
- 欢迎使用 Statecharts 世界
依赖关系
~3–4MB
~85K SLoC