AoE2 AI规则文件(.per)的格式化程序。

aoe2-ai-fmt的Python项目详细描述


帝国时代2人工智能规则形成者

这个项目提供了一个脚本,允许对AoE2.per文件进行基本语法检查和格式化。在

请注意,此工具目前正在进行中。关键的是,它还没有完全兼容为游戏的DE或用户补丁版本构建的.per文件。在

此工具依赖于Python>;=3.6。在

它是在UbuntuforWindows(WSL)上使用Python3.6开发的,但也在Ubuntu20.04上的Python3.8和Windows10上的Python3.8进行了测试。 在任何情况下,该工具在任何提供所需Python版本的环境中都可以正常工作。开发需要Linux环境。在

库的使用

该工具可以从命令行使用,也可以用作python项目中的库。 要用作库,可以通过pip安装。在

pip install aoe2-ai-fmt

然后使用format_per函数,如下所示。在

^{pr2}$

看到了吗格式.py另一个用法示例。在

来源使用

依赖关系

构建该工具需要ANTLR v4.8pipenv和gnumake。在

从源安装

克隆存储库,然后使用pipenv创建python virtualenv并在其中安装必要的依赖项。如果要进行更改,请指定--dev参数。在

pipenv --python 3 install [--dev]

(请注意,python3.6是必需的,但是由于a limitation in pipenv,Pipfile没有强制执行这一点。)

然后需要使用antlr4构建lexer、解析器和支持文件。如果antlr4位于$PATH中,则提供的Makefile可以为您调用此函数。在

make

然后,只需在virtualenv中从命令行运行该工具:

# ./format.py <path/to/src.per> <path/to/output.per>
# If the output path is provided as '-' then the formatted script will instead be printed to STDOUT.
pipenv run ./format.py examples/multistmt.input.per -

输入文件可以使用Windows或Unix风格的行尾。输出文件将始终以Windows行结尾创建,以匹配游戏平台。在

测试

回购协议中提供了一小套示例输入及其所需的精美打印等价物。 Makefile中包含了一个基本的测试配方,可以针对所有输入轻松运行工具,并允许手动检查与所需输出的任何差异。在

make test

存在一个make规则来运行pylint,其中包含的.pylintrc将忽略自动生成的ANTLR4解析器文件。在

make lint

局限性

由于该工具是使用解析器构建的,无效语法将导致格式化程序出错。在

这个工具是根据征服者提供的官方文档中提供的语言细节构建的。 由于本文档不是一个正式的语言规范,因此必须做出一些假设,特别是关于标识符和空白中允许的字符。 这个工具接受的文件可能不会被游戏引擎接受,反之亦然。 值得注意的是,DE和User Patch中可用的更高级的操作和事实目前不受该工具的支持,但对这些操作和事实的支持正在进行中。

请注意,此工具只检查基本语法。 此工具不会检测到不存在的事实或操作、错误数量的参数、未定义的常量以及其他类似错误。在

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

推荐PyPI第三方库


热门话题
从java包创建可执行jar文件   使用SFDC合作伙伴API创建新的“OpportunityLineItemSchedule”时发生java错误   java如何将一些用户定义的自定义参数直接插入到动态清单中?   java确定JFrame的图形配置?   java 安卓 studio中PendingEvent中的请求代码是什么   java如何在javaFx中为多个场景创建一个菜单栏   java ListNode头。下一个next=新的ListNode(0);这个错误是什么?   javax-to-Google-text-api。网ssl。异常:管道破裂   JAVAlang.ClassCastException:org。冬眠hql。内部的阿斯特。树无法将SqlNode转换为组织。冬眠hql。内部的阿斯特。树FromReferenceNode   jxl中程序关闭时java数据损坏   在java中从arraylist获取对象字段   继承java如何在实现父方法的同时扩展类   java spring boot thin jar什么都不做   java Eclipse消息称列表无法解析为类型   Java中的swing简单动画   java将prejson编码的字符串输出到spring框架   java ExpandableListView。setOnClickListener工作不正常   java将servletinputstream转换为sequenceinputstream   用Java4th版思考(尝试使用NetBeans构建本书的项目,但没有成功)   如何使用java从PostgreSQL数据库中的现有数据库创建新的XML文件