Fix bugs in interpreter argument parsing
This commit is contained in:
parent
ecf60198fa
commit
387ec25cda
39
src/main.rs
39
src/main.rs
@ -192,8 +192,8 @@ impl Repl {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lang" => {
|
"lang" => {
|
||||||
match commands[1] {
|
match commands.get(1) {
|
||||||
"show" => {
|
Some(&"show") => {
|
||||||
for (i, lang) in self.languages.iter().enumerate() {
|
for (i, lang) in self.languages.iter().enumerate() {
|
||||||
if i == self.current_language_index {
|
if i == self.current_language_index {
|
||||||
println!("* {}", lang.get_language_name());
|
println!("* {}", lang.get_language_name());
|
||||||
@ -202,33 +202,42 @@ impl Repl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"next" => {
|
Some(&"next") => {
|
||||||
self.current_language_index = (self.current_language_index + 1) % self.languages.len();
|
self.current_language_index = (self.current_language_index + 1) % self.languages.len();
|
||||||
}
|
}
|
||||||
"prev" | "previous" => {
|
Some(&"prev") | Some(&"previous") => {
|
||||||
self.current_language_index = if self.current_language_index == 0 { self.languages.len() - 1 } else { self.current_language_index - 1 }
|
self.current_language_index = if self.current_language_index == 0 { self.languages.len() - 1 } else { self.current_language_index - 1 }
|
||||||
},
|
},
|
||||||
e => println!("Bad `lang` argument: {}", e),
|
Some(e) => println!("Bad `lang` argument: {}", e),
|
||||||
|
None => println!("`lang` - valid arguments `show`, `next`, `prev`|`previous`"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"set" => {
|
"set" => {
|
||||||
let show = match commands[1] {
|
let show = match commands.get(1) {
|
||||||
"show" => true,
|
Some(&"show") => true,
|
||||||
"hide" => false,
|
Some(&"hide") => false,
|
||||||
e => {
|
Some(e) => {
|
||||||
println!("Bad `set` argument: {}", e);
|
println!("Bad `set` argument: {}", e);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
None => {
|
||||||
|
println!("`set` - valid arguments `show {{option}}`, `hide {{option}}`");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
match commands[2] {
|
match commands.get(2) {
|
||||||
"tokens" => self.show_tokens = show,
|
Some(&"tokens") => self.show_tokens = show,
|
||||||
"parse" => self.show_parse = show,
|
Some(&"parse") => self.show_parse = show,
|
||||||
"eval" => { /*self.evaluator.set_option("trace_evaluation", show);*/ },
|
Some(&"eval") => { /*self.evaluator.set_option("trace_evaluation", show);*/ },
|
||||||
"llvm" => self.show_llvm_ir = show,
|
Some(&"llvm") => self.show_llvm_ir = show,
|
||||||
e => {
|
Some(e) => {
|
||||||
println!("Bad `show`/`hide` argument: {}", e);
|
println!("Bad `show`/`hide` argument: {}", e);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
None => {
|
||||||
|
println!("`show`/`hide` requires an argument");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
e => println!("Unknown command: {}", e)
|
e => println!("Unknown command: {}", e)
|
||||||
|
Loading…
Reference in New Issue
Block a user