LALRPOP 高级设置 文档/教程-中文翻译 | LALRPOP Advanced setup

✏️ 铅笔开头的内容为译者添加
✏️ 翻译自 LALRPOP 教程 | 高级设置 | Advanced setup
✏️ 导航: <<[上篇-正式教程] - [目录] - [下篇-这是最后一篇]>>
✏️ 完整的中文文档(共9篇19k字): https://yuhanawa.github.io/posts/2023/57877

高级设置|Advanced setup

当你设置 LALRPOP 时, 你创建了一个 build.rs 文件, 看起来像这样:

extern crate lalrpop;

fn main() {
    lalrpop::process_root().unwrap();
}

这个 process_root() 调用只是使用了默认的配置. 所以它会在*当前路径(in-place)*(在你的src目录下)下把.lalrpop文件转化为.rs文件. 而且只有在 .lalrpop 文件发生改变时才会进行. 但是你也可以使用Configuration 结构来获得更精确(detailed)的控制.

比如, 想要强制在输出中使用颜色(忽略TTY设置), 你这样修改你的build.rs.

extern crate lalrpop;

fn main() {
    lalrpop::Configuration::new()
        .always_use_colors()  // ✏️ 添加这行
        .process_current_dir();
}

在源代码树中生成|Generate in source tree

✏️ 原文为单独一页 现在将其整合为一页

在0.15版本以前, LALRPOP 是在输入文件的同一目录下生成文件. 从0.16开始, 文件生成在Cargo的输出目录.

如果你想保持以前的习惯, 你可以调用generate_in_source_tree.
在你的配置中:

extern crate lalrpop;

fn main() {
    lalrpop::Configuration::new()
        .generate_in_source_tree() //✏️ 添加这行
        .process();
}

对于每一个 foo.lalrpop 文件, 你可以简单地在你的源代码树中设置mod foo;. lalrpop_mod宏在这种模式下不是很有用.


LALRPOP 高级设置 文档/教程-中文翻译 | LALRPOP Advanced setup
http://yuhanawa.github.io/posts/2023/21239/
作者
Yuhanawa
发布于
2023年1月24日
许可协议