python中的pluscal ast和builder

pluscal的Python项目详细描述


pluscal

PlusCalast和python中的builder

这是什么?

PlusCal是编译成TLA+规范的算法语言。此库定义 python类型构成PlusCalp语法的抽象语法树(ast),以及 用于流畅构建算法的builderapi。实现严重依赖于python dataclasses和类型提示;可以使用类型检查器(例如mypy)来验证语法。

预计这个库将被人类和程序用于语法构造。 更正规格并通过TLC模型检查器进行检查。

用法

从PIP安装:

pip install pluscal

创建算法:

>>>frompluscal.apiimportAlgorithm,Print,Variable>>>algorithm=Algorithm("hello_world",).declare(Variable("s").in_set("Hello","World!"),).do(Print("s",label="A"),)>>>print(algorithm)--algorithmhello_worldvariables \in{"Hello","World!"};beginA:prints;endalgorithm

限制

此库不完整。一些已知的限制包括:

  1. ExprFieldLabelNameVariable类型使用的低级TLA+语法。 既不建模也不完全验证。此时,这些类型基本上是字符串。

  2. 验证逻辑并不表示PlusCal的全部细微差别,特别是当它与 标签放置。

    请参阅pluscal手册的3.7部分。

  3. 一些假货行动尚未实施。

    请参阅pluscal手册的4.6部分。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java允许具有不同父类的类扩展类,而无需多重继承   java如何创建动态化的JScrollPane w/JPanel作为客户端?   java如何组织和命名包   在Java中读取属性文件   java无法解释的Android意图行为   在Java中动态执行多个BPEL文件的部署   ssl Java 6 SNI(服务器名称指示)?   java我们可以使用Robot框架自动化web和移动应用程序来执行并行执行   java for star pettern的循环   java为什么BinaryReader在线程中,从netty读取错误的数据包?   在java中将华氏度转换为摄氏度   使用Spark和java处理空值和引号编写CSV文件   Java中已排序日期到块的列表   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”