#编程语言 #语法 #递归 #Prism # #构建 #适应

prism-parser

为Prism编程语言构建的PEG解析库

2个不稳定版本

新版本 0.2.0 2024年8月18日
0.1.0 2024年6月14日

289编程语言 中排名

Download history 110/week @ 2024-06-09 24/week @ 2024-06-16 1/week @ 2024-06-23

每月下载量 105
用于 prism-compiler

MPL-2.0 许可证

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