Starting to move debug options around

+ add method to ProgrammingLanguageInterface that is a list of stages
This commit is contained in:
greg 2018-05-01 00:38:01 -07:00
parent fff587cd6a
commit aaf98db2b7
2 changed files with 28 additions and 5 deletions

View File

@ -169,6 +169,9 @@ pub trait ProgrammingLanguageInterface {
fn get_language_name(&self) -> String;
fn get_source_file_suffix(&self) -> String;
fn get_stages(&self) -> Vec<String> {
vec![]
}
fn handle_custom_interpreter_directives(&mut self, _commands: &Vec<&str>) -> Option<String> {
None
}

View File

@ -277,7 +277,26 @@ impl Repl {
writeln!(buf, "{}", lang.custom_interpreter_directives_help()).unwrap();
Some(buf)
},
"debug" => {
"debug" => self.handle_debug(commands),
e => self.languages[self.current_language_index]
.handle_custom_interpreter_directives(&commands)
.or(Some(format!("Unknown command: {}", e)))
}
}
fn handle_debug(&mut self, commands: Vec<&str>) -> Option<String> {
match commands.get(1) {
b @ Some(&"show") | b @ Some(&"hide") => {
let show = b == Some(&"show");
let debug_stage = match commands.get(2) {
Some(s) => s,
None => return Some(format!("Must specify a stage to debug")),
};
None
},
_ => Some(format!("Unknown debug command"))
}
/*
* {
let show = match commands.get(1) {
Some(&"show") => true,
Some(&"hide") => false,
@ -299,6 +318,9 @@ impl Repl {
};
None
},
AND DEBUG OPTIONS
"options" => {
let ref d = self.options.debug;
let tokens = if d.tokens { "true".green() } else { "false".red() };
@ -308,10 +330,8 @@ impl Repl {
Some(format!(r#"Debug:
tokens: {}, parse: {}, ast: {}, symbols: {}"#, tokens, parse_tree, ast, symbol_table))
},
e => self.languages[self.current_language_index]
.handle_custom_interpreter_directives(&commands)
.or(Some(format!("Unknown command: {}", e)))
}
*/
}
}