7 个不稳定版本

0.4.0 2024 年 8 月 6 日
0.3.1 2024 年 4 月 6 日
0.3.0 2023 年 8 月 29 日
0.2.0 2023 年 1 月 11 日
0.1.0 2019 年 7 月 7 日

#12 in 编程语言

Download history 430/week @ 2024-04-27 487/week @ 2024-05-04 679/week @ 2024-05-11 6576/week @ 2024-05-18 6186/week @ 2024-05-25 6632/week @ 2024-06-01 12760/week @ 2024-06-08 6039/week @ 2024-06-15 8224/week @ 2024-06-22 7475/week @ 2024-06-29 7459/week @ 2024-07-06 3456/week @ 2024-07-13 5732/week @ 2024-07-20 4961/week @ 2024-07-27 5615/week @ 2024-08-03 8674/week @ 2024-08-10

25,439 每月下载量
用于 27 个包 (20 直接)

MITLGPL-3.0-only

3MB
79K SLoC

RustPython/parser

此目录包含 Python 词汇、解析和生成抽象语法树 (AST) 的代码。

步骤如下

  • 词汇分析:将源代码分割成标记。
  • 解析和生成 AST:将这些标记转换为 AST。使用 LALRPOP,一个 Rust 解析器生成框架。

此包发布在 https://docs.rs/rustpython-parser

我们写了一篇博客文章,带有截图和解释,以帮助您通过实际操作了解步骤。

有关 LALRPOP 的更多信息,请参阅LALRPOP 书籍

src 目录中有一个说明每个文件的说明。

目录内容

build.rs:构建脚本。 Cargo.toml:配置文件。

src 目录包含

lib.rs
这是包的根。

lexer.rs
此模块负责对 Python 源文本进行词汇分析。这意味着源代码被转换为单独的标记。

parser.rs
一个 Python 解析模块。使用此模块将 Python 代码解析为 AST。有三种解析 Python 代码的方法。您可以解析整个程序、单个语句或单个表达式。

ast.rs
实现了 Python 语言的抽象语法树 (AST) 节点。大致相当于Python AST

python.lalrpop
Python 语法。

token.rs
不同的令牌定义。大致基于CPython源代码中的token.h。

errors.rs
定义内部解析错误类型。目标是提供匹配和安全错误API,屏蔽LALR错误。

fstring.rs
格式字符串。

function.rs
解析参数、参数的函数集合。

location.rs
支持源位置信息的类型。

mode.rs
执行模式检查。允许的模式是 execevalsingle

使用方法

例如,可以这样做

  use rustpython_parser::{Parse, ast};
  let python_source = "print('Hello world')";
  let python_statements = ast::Suite::parse(python_source).unwrap();  // statements
  let python_expr = ast::Expr::parse(python_source).unwrap();  // or expr

依赖项

~10MB
~169K SLoC