1 个不稳定版本

0.1.0 2023 年 7 月 19 日

#2633解析器实现

MIT/Apache

14KB
279

LBNF

用于解析 LBNF 的库。

这是一个用于解析 LBNF 的库。该库仅负责解析 LBNF。一些组件,如词法分析器、解析器和抽象语法树生成,尚缺,需要生成完整的上下文无关文法解析器。

什么是 LBNF?

标签化的巴科斯-诺尔形式(LBNF)是 BNF 的扩展,由工具 BNFC 正式化。除了常规 BNF 语法外,每个产生式还给出了一个标签,用于生成上下文无关语言的抽象语法。

此库不遵循 BNFC 的 LBNF 参考 中指定的所有规则。一些更改,特别是宏语法,已被做出,以使 LBNF 适用于更广泛的应用。

用法

let source = r#"
    EAdd.  Expr ::= Expr "+" Num ;
    ENum.  Expr ::= Num          ;

    NZero. Num  ::= "0"          ;
"#;

if let Ok(grammar) = lbnf::parse(source) {
    // The parsed grammar can now be used to generate the following structure:
    enum Expr {
        EAdd(Box<Expr>, Num),
        ENum(Num),
    }

    enum Num {
        NZero
    }
}

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则,根据 Apache-2.0 许可证定义,任何有意提交以包含在作品中的贡献,均应按照上述方式双许可,而无需附加条款或条件。

依赖关系

~5.5–8.5MB
~147K SLoC