用于 Rust 的左递归 PEG

时间:2021-06-28 19:05:27
【文件属性】:
文件名称:用于 Rust 的左递归 PEG
文件大小:24KB
文件格式:ZIP
更新时间:2021-06-28 19:05:27
lrpeg 左递归解析表达式语法 (PEG)lrpeg 允许左递归规则,并使用ratpack 解析来提高速度。我写了一篇博文介绍lrpeg的思想。现有的 Rust PEG 解析器生成器不允许左递归,这使得编写语法变得非常尴尬。可以编写一个允许左递归的 PEG 解析器生成器,就像python 现在使用的一样。见IRP语法一个完整的lrpeg语法和处理的IRP 。如何使用 lrpeg在 build-dependencies 中将 lrpeg 添加到 Cargo.toml 中:[build-dependencies] lrpeg = "0" [dependencies] regex = "1" unicode-xid = "0.2"现在将build.rs添加到项目的根目录,包含:use std::path::PathBuf; fn main() { lrpeg::process_files(&PathBuf::from("src")); }编写您的 peg 语法,并将其放入以.peg结尾的文件中,例如src/calculator.peg :calculator <- expr EOI;
【文件预览】:
lrpeg-main
----lrpeg-example()
--------build.rs(175B)
--------src()
--------Cargo.toml(203B)
----.github()
--------workflows()
----LICENSE(1KB)
----Cargo.toml(69B)
----.gitignore(18B)
----lrpeg-test()
--------build.rs(175B)
--------src()
--------Cargo.toml(236B)
--------broken.peg(28B)
----lrpeg()
--------src()
--------Cargo.toml(395B)
--------.gitignore(16B)
----README.md(6KB)

网友评论