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无法从spring resttemplate访问sms网关   使用spark上下文方法参数的java并行化集合不正确   java中ReadLock的并发检查副本   java基于属性比较两个列表是否具有相同的元素   字符串Java文本块:缩进前缀中的制表符和空格的混合   java如何将带有@SpringBootApplication的maven模块作为测试范围中的依赖项添加到另一个maven模块   我需要一些关于在Java中使用2个jar文件的帮助   mysql JPA Java Spring Boot执行查找/连接表   java对话框选择具有特定名称的文件   java如何修复Spring工具套件4中的端口8080错误?   Java中的apache poi Excel阅读器   java如何在tomcat访问日志中记录线程上下文值   java有一种方法可以创建类<T>的实例,该类将类作为传递泛型的构造函数中的参数   默认情况下,java GORM onetomany映射执行即时抓取   java不能在安卓中接受全局变量   统计系统的java MongoDB异步驱动程序排名   java如何解析:无法解析插件“org.springframework.ide.eclipse.ui”?   用Java从一副牌中随机抽取5张牌   javaapachecamel动态消费者   java如何克服使用Flood Fill 4算法时的“薄边界”问题?