From: Mark Thom Date: Wed, 17 Mar 2021 20:23:34 +0000 (-0600) Subject: issue an imcomplete reduction error if stream ends with tokens remaining to be parsed... X-Git-Tag: v0.9.0~125 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=5c2059b4e85b086ddbe554cb9c89e2032033cdfb;p=scryer-prolog.git issue an imcomplete reduction error if stream ends with tokens remaining to be parsed (#871) --- diff --git a/crates/prolog_parser/src/parser.rs b/crates/prolog_parser/src/parser.rs index c72d6453..364b0213 100644 --- a/crates/prolog_parser/src/parser.rs +++ b/crates/prolog_parser/src/parser.rs @@ -199,13 +199,21 @@ fn read_tokens(lexer: &mut Lexer) -> Result, ParserError> let mut tokens = vec![]; loop { - let token = lexer.next_token()?; - let at_end = token.is_end(); + match lexer.next_token() { + Ok(token) => { + let at_end = token.is_end(); + tokens.push(token); - tokens.push(token); - - if at_end { - break; + if at_end { + break; + } + } + Err(ParserError::UnexpectedEOF) if !tokens.is_empty() => { + return Err(ParserError::IncompleteReduction(lexer.line_num, lexer.col_num)); + } + Err(e) => { + return Err(e); + } } }