From: Mark Date: Tue, 27 Jun 2023 22:39:10 +0000 (-0600) Subject: better detect syntax errors in lexer.rs (#1771) X-Git-Tag: v0.9.2~109 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=039fffb33964f29258716710dee996fda959742e;p=scryer-prolog.git better detect syntax errors in lexer.rs (#1771) --- diff --git a/src/lib/charsio.pl b/src/lib/charsio.pl index 1fc120f0..99b5c281 100644 --- a/src/lib/charsio.pl +++ b/src/lib/charsio.pl @@ -193,6 +193,7 @@ get_single_char(C) :- % ``` read_from_chars(Chars, Term) :- must_be(chars, Chars), + must_be(var, Term), '$read_term_from_chars'(Chars, Term). %% write_term_to_chars(+Term, +Options, -Chars). diff --git a/src/parser/lexer.rs b/src/parser/lexer.rs index 9aeacd82..236585d9 100644 --- a/src/parser/lexer.rs +++ b/src/parser/lexer.rs @@ -859,7 +859,13 @@ impl<'a, R: CharRead> Lexer<'a, R> { self.get_single_quoted_char() .map(|c| Token::Literal(Literal::Fixnum(Fixnum::build_with(c as i64)))) - .or_else(|_| { + .or_else(|err| { + match err { + ParserError::UnexpectedChar('\'', ..) => { + } + err => return Err(err), + } + self.return_char(c); i64::from_str_radix(&token, 10)