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 编程语言
25,439 每月下载量
用于 27 个包 (20 直接)
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
执行模式检查。允许的模式是 exec
、eval
或 single
。
使用方法
例如,可以这样做
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