mirror of
https://github.com/RustPython/Parser.git
synced 2025-09-11 12:56:16 +00:00
Refactor symboltables and _ast to use codegen when possible
This commit is contained in:
parent
060d153bb3
commit
9c229ebb99
4 changed files with 24 additions and 25 deletions
|
@ -14,18 +14,6 @@ use crate::{
|
|||
use rustpython_ast::{self as ast, Location};
|
||||
use std::{borrow::Cow, fmt};
|
||||
|
||||
pub fn make_symbol_table(program: &[ast::Stmt]) -> SymbolTableResult<SymbolTable> {
|
||||
let mut builder = SymbolTableBuilder::new();
|
||||
builder.scan_statements(program)?;
|
||||
builder.finish()
|
||||
}
|
||||
|
||||
pub fn make_symbol_table_expr(expr: &ast::Expr) -> SymbolTableResult<SymbolTable> {
|
||||
let mut builder = SymbolTableBuilder::new();
|
||||
builder.scan_expression(expr, ExpressionContext::Load)?;
|
||||
builder.finish()
|
||||
}
|
||||
|
||||
/// Captures all symbols in the current scope, and has a list of subscopes in this scope.
|
||||
#[derive(Clone)]
|
||||
pub struct SymbolTable {
|
||||
|
@ -60,6 +48,18 @@ impl SymbolTable {
|
|||
sub_tables: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn scan_program(program: &[ast::Stmt]) -> SymbolTableResult<Self> {
|
||||
let mut builder = SymbolTableBuilder::new();
|
||||
builder.scan_statements(program)?;
|
||||
builder.finish()
|
||||
}
|
||||
|
||||
pub fn scan_expr(expr: &ast::Expr) -> SymbolTableResult<Self> {
|
||||
let mut builder = SymbolTableBuilder::new();
|
||||
builder.scan_expression(expr, ExpressionContext::Load)?;
|
||||
builder.finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue