Infrastructure to debug symbol table
This commit is contained in:
parent
3f9ae5fac3
commit
bb57da564d
@ -20,6 +20,7 @@ pub struct EvalOptions {
|
||||
pub debug_tokens: bool,
|
||||
pub debug_parse: bool,
|
||||
pub debug_type: bool,
|
||||
pub debug_symbol_table: bool,
|
||||
pub show_llvm_ir: bool,
|
||||
pub trace_evaluation: bool,
|
||||
pub compile: bool,
|
||||
|
@ -230,7 +230,7 @@ impl Repl {
|
||||
println!("Commands:");
|
||||
println!("exit | quit");
|
||||
println!("lang [show|next|previous]");
|
||||
println!("set [show|hide] [tokens|parse|eval|llvm]");
|
||||
println!("set [show|hide] [tokens|parse|symbols|eval|llvm]");
|
||||
}
|
||||
"lang" => {
|
||||
match commands.get(1) {
|
||||
@ -271,6 +271,7 @@ impl Repl {
|
||||
match commands.get(2) {
|
||||
Some(&"tokens") => self.options.debug_tokens = show,
|
||||
Some(&"parse") => self.options.debug_parse = show,
|
||||
Some(&"symbols") => self.options.debug_symbol_table = show,
|
||||
Some(&"eval") => {
|
||||
//let ref mut language = self.languages[self.current_language_index];
|
||||
//language.set_option("trace_evaluation", show);
|
||||
|
@ -71,6 +71,11 @@ impl ProgrammingLanguageInterface for Schala {
|
||||
}
|
||||
}
|
||||
|
||||
if options.debug_symbol_table {
|
||||
let text = self.type_context.debug_symbol_table();
|
||||
output.add_artifact(TraceArtifact::new("symbol_table", text));
|
||||
}
|
||||
|
||||
let evaluation_output = self.state.evaluate(ast);
|
||||
let mut acc = String::new();
|
||||
let mut iter = evaluation_output.iter().peekable();
|
||||
|
@ -55,6 +55,9 @@ impl TypeContext {
|
||||
pub fn new() -> TypeContext {
|
||||
TypeContext { symbol_table: SymbolTable::new() }
|
||||
}
|
||||
pub fn debug_symbol_table(&self) -> String {
|
||||
format!("Symbol table:\n {:?}", self.symbol_table.map)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct SchalaType {
|
||||
|
Loading…
Reference in New Issue
Block a user