You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of this issue is with the way that swipl implements assertz and will fail when tested against swipl using this construct. This could probably be fixed within pyswip by using the [user] pseudo file instead of asserta/asserz mechanism, but that seems a lot of work for a corner case.
To work around this problem use the dcg translation mechanism directly. To test the above code, try the construct
This seems to work when a file is consulted, but does not appear to work when utilized via assert:
Simplest possible example:
as --> [].
as --> [a], as.
?- phrase(as,[a,a,X,a]).
X = a.
If the DCG is described in a file and p.consult("dcgtest.pl") used, this works as expected:
for r in p.query("phrase(as,[a,X,a,a])"):
print(r)
If we try to assert instead, things do not appear to be parsing correctly
p.assertz("as --> []")
p.assertz("as --> [a], as")
yields
PrologError: Caused by: 'phrase(as,[a,X,a,a])'. Returned: 'error(existence_error(procedure, /(as, 2)), context(:($dcg, /(call_dcg, 3)), Variable(76)))'.
I need to generate and insert the DCG from the python side. Is there a way to accomplish this that I am not understanding ?
The text was updated successfully, but these errors were encountered: