diff --git a/src/elements/script.rs b/src/elements/script.rs index c770898a..f6a30654 100644 --- a/src/elements/script.rs +++ b/src/elements/script.rs @@ -80,19 +80,11 @@ impl Script { match ans.check_nest(feeder){ Status::NormalEnd => return Ok(Some(ans)), Status::UnexpectedSymbol(s) => { - eprintln!("Unexpected token: {}", s); - let e = ParseError::UnexpectedSymbol(s.clone()); - e.print(core); core.db.set_param("?", "2").unwrap(); - feeder.consume(feeder.len()); - return Err(e); + return Err(ParseError::UnexpectedSymbol(s.clone())); }, Status::NeedMoreLine => { - let res = feeder.feed_additional_line(core); - if let Err(e) = res { - feeder.consume(feeder.len()); - return Err(e); - } + feeder.feed_additional_line(core)?; }, } } diff --git a/src/main.rs b/src/main.rs index 2f966f74..2b6799ff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -53,9 +53,19 @@ fn main_loop(core: &mut ShellCore) { _ => break, } - if let Ok(Some(mut s)) = Script::parse(&mut feeder, core){ - if let Err(e) = s.exec(core) { + match Script::parse(&mut feeder, core){ + Ok(Some(mut s)) => { + if let Err(e) = s.exec(core) { + e.print(core); + break; + } + } + Ok(None) => {}, + Err(e) => { + dbg!("!!"); + feeder.consume(feeder.len()); e.print(core); + break; } } core.sigint.store(false, Relaxed);