#paradox #parser #tool #script-file #game

pdx-syntax

Paradox 脚本/本地化语法解析器

2 个不稳定版本

0.2.0 2023 年 10 月 1 日
0.1.0 2023 年 9 月 30 日

#5 in #paradox

MIT 许可证

16KB
228

PDX 语法

这是一个定义 Paradox 游戏文件语法的 crate。它可以用来将纯文本文件解析为它定义的 AST。此 crate 的主要目的是提供一种方便的文件解析方式,可用于进一步的工具,特别是用于模组制作工具。

使用方法

/// Parse a given paradox script file.
use pdx_syntax::script::parse_file;
fn main() {
    let mut args = std::env::args();
    args.next();
    let path = args.next().expect("Missing argument: path");
    let ast = parse_file(&path).unwrap();
    // Do something with the AST.
    ast.push(Unit::SingleValue(Value::Primitive(Entry::Ident(
        "TEST".to_string(),
    ))));
    // Dump to file in origin syntax.
    println!("{}", ast);
}

支持的语法

  • 脚本:Paradox 脚本。您可以在类似 ${game_root_dir}/game/common 的路径中找到文件。大多数文件都是这种格式。有关详细信息,请参阅 crate::script
  • 本地化:Paradox 本地化文件。您可以在 ${game_root_dir}/game/localization 中找到文件。有关详细信息,请参阅 crate::localization

序列化

此 crate 中定义的 AST 可以通过 serde 进行序列化。您可以使用此功能将 AST 转换为其他格式,如 JSON,并在其他语言(如 Python)中使用解析结果。

依赖关系

~3–6MB
~102K SLoC