#语言 #状态机 #领域特定语言

scdlang

状态图描述语言的内核解析器

3个不稳定版本

0.2.1 2019年7月9日
0.2.0 2019年7月9日
0.1.0 2019年6月30日

#2674 in 解析器实现


3 个crate中使用

UPL-1.0 许可证

54KB
1.5K SLoC

Scdlang

Statecharts Description Language

current version Docker image size License

🚧状态: 🗶实验性 4ever🤞

关于

Scdlang(发音为 /ˈesˌsi:ˈdi:ˈlæŋ/)是一种用于描述状态图的描述性语言,之后可以用于生成代码或将代码转换成其他格式。本项目更关注如何通用地描述状态图,以便在另一种语言/平台上使用,而不是绘制状态图。关于绘制,请参阅 状态机猫

quick_demo

哲学

  • 可读性就像您阅读并可视化状态图一样
  • 可写性就像您编写简洁、清晰且可重构的代码一样
  • 可移植性到任何实现(例如平台、编程语言、运行时等)

功能和 愿望列表

  • CLI工具(见 用法
  • 语法灵感来自各种绘图语言,如 mermaidGraphvizPlantUML
  • 合理的错误信息
  • 通过语义分析避免无效和歧义性转换
  • 规则定义用于静态分析和形式验证
  • 转换为其他格式
  • 编译成其他格式(需要此功能以使其成为可嵌入的领域特定语言)
    • WebAssembly(使用 parity-wasm
    • LLVM IR 🤔(打开将其编译为wasm、dynlib和静态库的可能性)
  • 代码生成 🤔(不确定是否需要此功能,但为什么不要呢?)

更多信息,请参阅发布页面中的变更日志

入门指南

目前,本项目为每个操作系统提供二进制CLI。请访问发布页面下载并解压。它还附带了适用于您首选shell的自动完成脚本。

安装

只需从发布页面下载二进制文件或按照以下说明操作 👇

Linux🐧

TODO: (AUR, DEB, RPM)或通过shellscript安装,就像安装rustup一样

MacOS🍏

TODO: brew或通过shellscript安装,就像安装rustup一样

Windows🗔

TODO: chocolatey或通过msi安装程序安装,就像安装rustup一样

使用Docker🐳

smcatdotgraph-easy已预安装在Docker镜像中

docker pull scdlang/scrap

通过Cargo📦

cargo install s-crap

贡献

open "help wanted" issues open "good first issue" issues

只要遵循行为准则,任何贡献都受欢迎。
如果您有任何问题或需要讨论的内容,请随时私信或在任何有我头像的平台中提及我 👹。

许可

本项目根据通用许可1.0版授权 - 更多详细信息请参阅LICENSE文件。

资源

依赖项

~2.2–3MB
~59K SLoC