У меня есть DCG, написанный в прологе, который пытается перевести строку в простую логику высказываний.Запрашивать DCG Prolog для ответа
Действующие правила: + означает OR, * средства и, - значит НЕ
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
ошибками.
Этот код должен быть правильным, но как я прошу Пролог дать and(not(or(a,b)),or(b,not(a)))
как ответ на -(a+b) * (b + -a)
Вы можете использовать свою грамматику для генерации всех предложений вроде: '? - length (L, N), фраза (g (X), L) .' – false