Skip to content

Commit e494175

Browse files
committed
Update the compiler to use the new asdl ast types
1 parent dd7560c commit e494175

1 file changed

Lines changed: 11 additions & 24 deletions

File tree

‎porcelain/src/lib.rs‎

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -75,29 +75,16 @@ pub fn compile(
7575
source_path: String,
7676
opts: CompileOpts,
7777
) -> Result<CodeObject, CompileError> {
78-
macro_rules! try_parse {
79-
($x:expr) => {
80-
match $x {
81-
Ok(x) => x,
82-
Err(e) => return Err(CompileError::from_parse(e, source, source_path)),
83-
}
84-
};
85-
}
86-
let res = match mode {
87-
compile::Mode::Exec => {
88-
let ast = try_parse!(parser::parse_program(source));
89-
compile::compile_program(ast, source_path, opts)
90-
}
91-
compile::Mode::Eval => {
92-
let statement = try_parse!(parser::parse_statement(source));
93-
compile::compile_statement_eval(statement, source_path, opts)
94-
}
95-
compile::Mode::Single => {
96-
let ast = try_parse!(parser::parse_program(source));
97-
compile::compile_program_single(ast, source_path, opts)
98-
}
78+
let mode = match mode {
79+
compile::Mode::Exec => parser::Mode::Module,
80+
compile::Mode::Eval => parser::Mode::Expression,
81+
compile::Mode::Single => parser::Mode::Interactive,
82+
};
83+
let ast = match parser::parse(source, mode) {
84+
Ok(x) => x,
85+
Err(e) => return Err(CompileError::from_parse(e, source, source_path)),
9986
};
100-
res.map_err(|e| CompileError::from_compile(e, source))
87+
compile::compile_top(&ast, source_path, opts).map_err(|e| CompileError::from_compile(e, source))
10188
}
10289

10390
pub fn compile_symtable(
@@ -119,8 +106,8 @@ pub fn compile_symtable(
119106
symboltable::make_symbol_table(&ast)
120107
}
121108
compile::Mode::Eval => {
122-
let statement = try_parse!(parser::parse_statement(source));
123-
symboltable::statements_to_symbol_table(&statement)
109+
let expr = try_parse!(parser::parse_expression(source));
110+
symboltable::make_symbol_table_expr(&expr)
124111
}
125112
};
126113
res.map_err(|e| CompileError::from_symtable(e, source, source_path.to_owned()))

0 commit comments

Comments
 (0)