【发布时间】:2015-07-07 07:59:47
【问题描述】:
我有一个用 prolog 编写的 DCG,它试图将字符串转换为简单的命题逻辑。
目前的规则是: + 表示 OR,* 表示 AND,- 表示 NOT
g(or(X,Y)) -->
f(X),
"+",
g(Y).
g(X) -->
f(X).
f(and(X,Y)) -->
e(X),
"*",
f(Y).
f(X) -->
e(X).
e(not(X)) -->
"-",
d(X).
e(X) -->
d(X).
d(X)-->
"(",
g(X),
")".
d(a)-->
"a".
d(b)-->
"b".
但是我遇到了Out of local trace 错误的问题。
这段代码应该是正确的,但是我如何让Prolog给and(not(or(a,b)),or(b,not(a)))作为-(a+b) * (b + -a)的答案
【问题讨论】:
-
您可以使用您的语法生成所有句子,如下所示:
?- length(L,N), phrase(g(X), L).
标签: prolog swi-prolog dcg