36 个版本

0.13.7 2024 年 6 月 14 日
0.13.4 2024 年 1 月 4 日
0.13.3 2023 年 9 月 21 日
0.13.1 2023 年 1 月 27 日
0.1.1 2018 年 12 月 18 日

#44解析工具

Download history 1748/week @ 2024-05-04 1926/week @ 2024-05-11 2005/week @ 2024-05-18 2311/week @ 2024-05-25 2436/week @ 2024-06-01 1854/week @ 2024-06-08 2216/week @ 2024-06-15 2912/week @ 2024-06-22 2225/week @ 2024-06-29 2163/week @ 2024-07-06 1862/week @ 2024-07-13 1627/week @ 2024-07-20 1766/week @ 2024-07-27 1992/week @ 2024-08-03 1784/week @ 2024-08-10 1812/week @ 2024-08-17

7,589 每月下载量
6 crates 中使用

Apache-2.0/MIT

505KB
11K SLoC

lrlex

lrlexlex / flex 的部分替代品。它接受一个输入字符串,并根据 .l 文件将其分割成 词素。不幸的是,许多现实世界的语言都有一些超出 lrlex 能力范围的边缘情况。然而,当它适用时,它是一种非常方便的表示词法分析的方法。

lrlex 还有一个简单的命令行界面,允许您检查您的词法规则是否按预期工作

$ cat C.java
class C {
    int x = 0;
}
$ cargo run --lrlex java.l /tmp/C.java
    Finished dev [unoptimized + debuginfo] target(s) in 0.18s
     Running `target/debug/lrlex ../grammars/java7/java.l /tmp/C.java`
CLASS class
IDENTIFIER C
LBRACE {
INT int
IDENTIFIER x
EQ =
INTEGER_LITERAL 0
SEMICOLON ;
RBRACE }

lib.rs:

lrlexlex / flex 的部分替代品。它接受一个 .l 文件并将其静态编译成 Rust 代码。生成的 [LRNonStreamingLexerDef] 可以接受一个输入字符串,并从中实例化一个 [LRNonStreamingLexer]。这提供了一个迭代器,可以生成该输入的 lrpar::Lexeme 序列,以及回答有关 cfgrammar::Span 的基本查询(例如提取子字符串,计算行和列号)。

依赖关系

~4–13MB
~147K SLoC