mthom / scryer-prolog

A modern Prolog implementation written mostly in Rust.
BSD 3-Clause "New" or "Revised" License
1.93k stars 116 forks source link

[user]. Syntax error not reported #2418

Open flexoron opened 3 weeks ago

flexoron commented 3 weeks ago
?- [user].
{x|y|z}.
?- X =.. [{},(A|B|C)], call(X).
   error(syntax_error(incomplete_reduction),read_term/3:1). % unexpected
   X = {x|y|z}, A = x, B = y, C = z. % expected but not found.
?- 
flexoron commented 3 weeks ago

sorry, forgot dcgs

$ scryer-prolog -f
?- use_module(library(dcgs)).
   true.
?- [user].
{x|y|z}.

?- X =.. [{},(A|B|C)], call(X).
   X = {x|y|z}, A = x, B = y, C = z.
?- 
flexoron commented 3 weeks ago

The issue here is the [user] part (without dcgs)

$ scryer-prolog -f
?- [user].
{x|y|z}. % Input accepted but ignored and should be handled like the following query?

?- X = {x|y|z}.
   error(syntax_error(incomplete_reduction),read_term/3:1).

?- use_module(library(dcgs)).
   true.
?- X = {x|y|z}.
   X = {x|y|z}.
UWN commented 3 weeks ago

It seems that syntax errors are not reported in general.


ulrich@gupu:/opt/gupu/scryer-prolog$ target/release/scryer-prolog -v
v0.9.4-53-g2d18e0d7
ulrich@gupu:/opt/gupu/scryer-prolog$ target/release/scryer-prolog -f
?- [user].
p(1++2).
?- p(1++2).
   error(syntax_error(incomplete_reduction),read_term/3:1).
flexoron commented 3 weeks ago
$ cat x.pl 
{x|y|z}.

$ scryer-prolog -f
?- use_module(library(dcgs)).
   true.
?- [x].
   true.
?- X =.. [{},(A|B|C)], call(abc:X).
   error(existence_error(procedure,abc:{}/1),{}/1). % expected, call(abc:X)
?- X =.. [{},(A|B|C)], call(user:X). 
   X = {x|y|z}, A = x, B = y, C = z. % expected, call(user:X)
?- halt. 

$ scryer-prolog -f
?- [x].
   error(syntax_error(incomplete_reduction),read_term/3:1). % expected
?- 

Issue happens in interactive mode