-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Swipl DCG does not appear to function #131
Comments
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 ?- dcg_translate_rule((as --> []),T),assertz(T). |
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: