pub struct SymbolTableScopes(/* private fields */);
Expand description
A stack of symbol tables of different scopes. Topmost is the current scope.
Implementations§
Source§impl SymbolTableScopes
impl SymbolTableScopes
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/async_runtime_example.rs (line 50)
46fn generate_and_display(python_code: &str, options: PythonOptions) {
47 match parse_enhanced(python_code, "example.py") {
48 Ok(ast) => {
49 let ctx = CodeGenContext::Module("example".to_string());
50 let symbols = SymbolTableScopes::new();
51
52 match ast.to_rust(ctx, options, symbols) {
53 Ok(tokens) => {
54 let code_str = tokens.to_string();
55
56 // Pretty print key parts
57 println!("Generated Rust code:");
58
59 // Extract imports
60 let parts: Vec<&str> = code_str.split(" ; ").collect();
61 for part in &parts {
62 if part.starts_with("use ") {
63 println!(" {}", part.trim());
64 }
65 }
66
67 // Find main function
68 if let Some(main_start) = code_str.find("# [") {
69 if let Some(main_end) = code_str[main_start..].find("async fn main") {
70 if let Some(brace) = code_str[main_start + main_end..].find(" {") {
71 let main_signature = &code_str[main_start..main_start + main_end + brace + 2];
72 println!(" {}", main_signature.trim());
73 println!(" // ... main function body ...");
74 println!(" }}");
75 }
76 }
77 }
78 }
79 Err(e) => {
80 println!("❌ Code generation failed: {}", e);
81 }
82 }
83 },
84 Err(e) => {
85 println!("❌ AST parsing failed: {}", e);
86 }
87 }
88}
pub fn push(&mut self, table: SymbolTable)
pub fn pop(&mut self) -> Option<SymbolTable>
pub fn new_scope(&mut self)
pub fn insert(&mut self, key: String, value: SymbolTableNode)
pub fn get(&self, key: &str) -> Option<&SymbolTableNode>
Trait Implementations§
Source§impl Clone for SymbolTableScopes
impl Clone for SymbolTableScopes
Source§fn clone(&self) -> SymbolTableScopes
fn clone(&self) -> SymbolTableScopes
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for SymbolTableScopes
impl Debug for SymbolTableScopes
Auto Trait Implementations§
impl Freeze for SymbolTableScopes
impl RefUnwindSafe for SymbolTableScopes
impl Send for SymbolTableScopes
impl Sync for SymbolTableScopes
impl Unpin for SymbolTableScopes
impl UnwindSafe for SymbolTableScopes
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ErrorContext for Twhere
T: Debug,
impl<T> ErrorContext for Twhere
T: Debug,
Source§fn with_context(&self, operation: &str) -> String
fn with_context(&self, operation: &str) -> String
Generate a standardized error message with context.