]> Repositorios git - scryer-prolog.git/commitdiff
better detect syntax errors in lexer.rs (#1771)
authorMark <[email protected]>
Tue, 27 Jun 2023 22:39:10 +0000 (16:39 -0600)
committerMark <[email protected]>
Tue, 27 Jun 2023 22:39:20 +0000 (16:39 -0600)
src/lib/charsio.pl
src/parser/lexer.rs

index 1fc120f0e4b40c56ee0826ed2518971ba6e686c8..99b5c281188f7b3b63a75fd44c3476269f993f1b 100644 (file)
@@ -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).
index 9aeacd82c5fce839b3ae4632b143e73cdda16601..236585d9cd16e6b8d57f20dfa0d7509f75e62c24 100644 (file)
@@ -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)