fix several issues with goal expansion, crashing after attribute_goals is called

This commit is contained in:
Mark Thom
2019-10-08 12:28:23 -06:00
parent 673fb31ae2
commit 3409db010f
8 changed files with 150 additions and 180 deletions

View File

@@ -18,7 +18,8 @@
'$default_attr_list'([PG | PGs], Module, AttrVar) -->
( { '$module_of'(Module, PG) } -> [Module:put_atts(AttrVar, PG)]
; { true } ),
; true
),
'$default_attr_list'(PGs, Module, AttrVar).
'$default_attr_list'([], _, _) --> [].

View File

@@ -160,6 +160,7 @@ comma_errors(G1, G2, B) :- '$call_with_default_policy'(','(G1, G2, B)).
:- non_counted_backtracking (;)/3.
;(G1, G4, B) :- compound(G1),
'$call_with_default_policy'(G1 = ->(G2, G3)),
!,
(G2 -> G3 ; '$set_cp'(B), G4).
;(G1, G2, B) :- G1 == !, '$set_cp'(B), G2.
;(G1, G2, B) :- G2 == !, G1, '$set_cp'(B).

View File

@@ -7,16 +7,7 @@
user:term_expansion(Term0, (Head :- Body)) :-
dcg_rule(Term0, Term),
Term = (Head :- Body0),
unravel_commas(Body0, Body).
unravel_commas(((A, B), C), Body) :-
!,
unravel_commas((B, C), Body0),
unravel_commas((A, Body0), Body).
unravel_commas((A, B), (A, Body0)) :-
!, unravel_commas(B, Body0).
unravel_commas(Body, Body).
Term = (Head :- Body).
phrase(GRBody, S0) :-
phrase(GRBody, S0, []).