fix verify_attributes_stepper bug: proceed now considered a head instruction
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "scryer-prolog"
|
name = "scryer-prolog"
|
||||||
version = "0.8.105"
|
version = "0.8.106"
|
||||||
authors = ["Mark Thom <markjordanthom@gmail.com>"]
|
authors = ["Mark Thom <markjordanthom@gmail.com>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
repository = "https://github.com/mthom/scryer-prolog"
|
repository = "https://github.com/mthom/scryer-prolog"
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ impl Line {
|
|||||||
&Line::Cut(_) => true,
|
&Line::Cut(_) => true,
|
||||||
&Line::Fact(_) => true,
|
&Line::Fact(_) => true,
|
||||||
&Line::Query(_) => true,
|
&Line::Query(_) => true,
|
||||||
|
&Line::Control(ControlInstruction::Proceed) => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,10 +86,13 @@ user:term_expansion(Term0, Terms) :-
|
|||||||
nonvar(Term0),
|
nonvar(Term0),
|
||||||
Term0 = (:- attribute Atts),
|
Term0 = (:- attribute Atts),
|
||||||
nonvar(Atts),
|
nonvar(Atts),
|
||||||
phrase(put_attrs_var_check, Terms, Terms1),
|
phrase(expand_terms(Atts), Terms).
|
||||||
phrase(put_attrs(Atts), Terms1, Terms2),
|
|
||||||
phrase(get_attrs_var_check, Terms2, Terms3),
|
expand_terms(Atts) -->
|
||||||
phrase(get_attrs(Atts), Terms3).
|
put_attrs_var_check,
|
||||||
|
put_attrs(Atts),
|
||||||
|
get_attrs_var_check,
|
||||||
|
get_attrs(Atts).
|
||||||
|
|
||||||
put_attrs_var_check -->
|
put_attrs_var_check -->
|
||||||
{ numbervars([Var, Attr], 0, _) },
|
{ numbervars([Var, Attr], 0, _) },
|
||||||
@@ -105,7 +108,7 @@ get_attrs_var_check -->
|
|||||||
put_attrs(Name/Arity) -->
|
put_attrs(Name/Arity) -->
|
||||||
put_attr(Name, Arity),
|
put_attr(Name, Arity),
|
||||||
{ numbervars([Var, Attr], 0, _) },
|
{ numbervars([Var, Attr], 0, _) },
|
||||||
[(put_atts(Var, Attr) :- lists:maplist(put_atts(Var), Attr), !)].
|
[(put_atts(Var, Attr) :- lists:maplist(put_atts(Var), Attr))].
|
||||||
put_attrs((Name/Arity, Atts)) -->
|
put_attrs((Name/Arity, Atts)) -->
|
||||||
{ nonvar(Atts) },
|
{ nonvar(Atts) },
|
||||||
put_attr(Name, Arity),
|
put_attr(Name, Arity),
|
||||||
|
|||||||
Reference in New Issue
Block a user