Я работаю с арифметикой Пролога и имею программу, которая генерирует абстрактное синтаксическое дерево, такое как plus(num(1),num(2))
, которое просто 1+2
. Это делается с помощью DCG. В этом примере plus(num(1),num(2))
совпадает с представлением списка префиксов [+,1,2]
.
Моя проблема в том, что я хочу разрешить только num(x)
больше 3. Например, num(4)
разрешено, но не num(1)
.
Я делаю это:
num(num(4)) --> [4].
num(num(5)) --> [5].
num(num(6)) --> [6].
num(num(7)) --> [7].
и т.д., но хотелось бы сделать что-то вроде num(num(x)) --> [x].
для чисел больше 3. Есть идеи, как подойти к этой проблеме?