1 个稳定版本

1.0.0 2024年6月6日

#176解析工具

Download history 126/week @ 2024-06-03 5/week @ 2024-06-10 1/week @ 2024-06-24

132 每月下载量
2 crates 中使用

Apache-2.0

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