2个不稳定版本
新版本 0.2.0 | 2024年8月18日 |
---|---|
0.1.0 | 2024年6月14日 |
289 在 编程语言 中排名
每月下载量 105
用于 prism-compiler
105KB
3K SLoC
Prism解析器
为Prism编程语言构建的PEG解析库
关于
此crate提供以下功能的PEG解析器:
- 支持左递归
- 适应:语法可以在解析过程中动态更改
此crate正在积极开发中,尚未准备好在生产代码中使用。
示例
这定义了一个简单算术语言的语法,并支持适应语言
rule start = block;
rule block {
b <- "grammar" "{" g:grammar(prule_action) "}" ";" b:#adapt(g, block);
s :: b <- s:stmt ";" b:block;
[] <- "";
}
rule stmt {
Let(e) <- "let" e:expr;
Do() <- "do";
}
rule expr {
group additive {
Add(x, y) <- x:#next "+" y:#this;
}
group multiplicative {
Mul(x, y) <- x:#next "*" y:#this;
}
group base {
Block(b) <- "(" b:block ")";
UnaryMinus(v) <- "-" v:#this;
Num(n) <- n:#str([0-9]*);
}
}
rule layout = [' ' | '\n'];
该语言中的示例程序
1 * 2 + -3
grammar {
rule expr {
group additive {
1 + (-2) <- x:#next "-" y:#this;
}
}
};
1 - 2
依赖关系
~1.4–2.5MB
~42K SLoC