1 个稳定版本
1.0.0 | 2024年6月6日 |
---|
#176 在 解析工具
132 每月下载量
在 2 crates 中使用
205KB
4K SLoC
WAGon 解析器
一个用于解析 WAGon DSL 的库。该crate提供了一个结构体,给定一个包含 DSL 的 String
作为输入,要么返回表示输入文件的完整 AST,要么返回适当的错误。错误可以按需处理,AST 可以作为任何代码生成或分析的基础。
此外,该crate还包括一个非常简单的检查器,执行以下操作
- 检查任何规则在其声明中是否有重复的属性(即
S<*a, *a> -> ...;
)。 - 检查同一非终端的不同定义在其声明中是否有不同的属性(即
S<*a> -> ...; S<*b, *c> -> ...;
)。 - 将同一非终端的多个规则合并为具有备选方案的单一规则。
- 提取 EBNF 操作符。
该crate将是任何希望使用 WAGs 的语言设计者的主要入口点。
示例
use wagon_parser::parse_and_check;
let input_grammar = ...;
let wag = parse_and_check(input_grammar);
assert!(wag.is_ok());
此 crate 还定义了完全解析的 WAGon WAG 的 AST。它的结构反映了正式 DSL 的结构。
依赖关系
~8MB
~120K SLoC