我正在使用 Prolog 算术,并且有一个程序可以生成抽象语法树,例如plus(num(1),num(2))
is 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 的数字做类似的事情。关于如何解决这个问题的任何想法?