diff --git a/src/elements/script.rs b/src/elements/script.rs index 94b8f974..d180fc48 100644 --- a/src/elements/script.rs +++ b/src/elements/script.rs @@ -79,23 +79,12 @@ impl Script { match ans.check_nest(feeder){ Status::NormalEnd => return Ok(Some(ans)), + Status::NeedMoreLine => feeder.feed_additional_line(core)?, 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); - }, - Status::NeedMoreLine => { - if ! feeder.feed_additional_line(core).is_ok() { - break; - } + return Err(ParseError::UnexpectedSymbol(s.clone())); }, } } - - feeder.consume(feeder.len()); - Ok(None) } } diff --git a/src/main.rs b/src/main.rs index 2f966f74..fb07fbe3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -53,9 +53,18 @@ 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) => { + feeder.consume(feeder.len()); e.print(core); + break; } } core.sigint.store(false, Relaxed); diff --git a/src/utils/exit.rs b/src/utils/exit.rs index 6786370c..9ef97f01 100644 --- a/src/utils/exit.rs +++ b/src/utils/exit.rs @@ -1,5 +1,5 @@ //SPDX-FileCopyrightText: 2024 Ryuichi Ueda ryuichiueda@gmail.com -//PDX-License-Identifier: BSD-3-Clause +//SPDX-License-Identifier: BSD-3-Clause use crate::ShellCore; use std::process;