6da248872b
- emit_program_module:模块顶层编译(is_global_scope=false,顶层 this undefined 由 VM 按标志绑定) - emit_module_into_ctx:预声明/闭包分析识别 export 包裹声明与 import 绑定 - 依赖收集:import/re-export/star 的 source 去重、循环检测、json/text 数据模块 - 导入绑定初始化:__moduleLinkGet 链接期检查;self-import 别名语义(export 处回写) - export 域:声明/重导出/export */export default 就地注册命名空间 - re-export 链接检查移至 prelude(先于 body 求值) - emit_module_call 参数打包连续寄存器(CALL_NATIVE 契约) - CompileCtx 增 module_ns_reg/module_dep_ns_regs/self-import 映射 - 拆分 declaration helper(export 声明复用);function/class 表达式 emitter 提升可见性
24 lines
901 B
Rust
24 lines
901 B
Rust
//! oxide_emit:AST → IR 代码生成层(编译管线中段)。
|
||
//!
|
||
//! 入口 `Emitter::emit_program` 把 parser 产出的 `Program` 编译为分域组合的
|
||
//! `IRFunction`(code/data/bindings/builtins/closures/meta/nested),再由
|
||
//! `oxide_ir::lower` 降为 bytecode。语法按域拆分:`expr/`、`stmt/`、`class/`、
|
||
//! `shared/`;作用域与闭包捕获分析在 emit 前完成,消除符号表时序依赖。
|
||
|
||
pub mod class;
|
||
pub mod closure;
|
||
pub mod module;
|
||
pub mod emit;
|
||
mod emit_log;
|
||
pub mod emit_ctx;
|
||
pub mod expr;
|
||
pub mod prepass;
|
||
pub mod shared;
|
||
pub mod stmt;
|
||
pub mod symbol_table;
|
||
|
||
pub use emit::{is_anonymous_function_definition, is_int_literal, is_side_effect_free};
|
||
pub use emit::{CompileCtx, Emitter, FunctionBodyContext, LabelScope, ParamSpec};
|
||
pub use oxide_bytecode::module::Constant;
|
||
pub use oxide_parser::{AssignmentOperator, BinaryOperator, UnaryOperator};
|