Prolog DCG解释

时间:2018-01-03 16:17:00

标签: prolog dcg

我无法理解Prolog中DCG的语法和用法。我正在使用的代码是一种解析器,用于“a = 1 * 2 +(3-4)/ 5”类型的语法,这里有一个选择:

factor(factor(N)) --> int(N).

int(N):- number(N), N > 0, N < 10.

运行时,它看起来像这样

| ?- int(8).

yes

| ?- factor(8).

! Existence error in user:factor/1

! procedure user:factor/1 does not exist

! goal:  user:factor(8)

| ?- factor([],[],[]).

no

因此,因子需要3个参数。但是,我无法理解这些论点的意思是什么,也不能理解为了使查询说“是”而需要投入的内容?

1 个答案:

答案 0 :(得分:0)

要运行DCG解析器,您将需要使用phrase/2phrase/3

phrase(factor(8), Text).
phrase(factor(N), "123", Rest).

phrase的第三个参数是输入的剩余部分(或者考虑到DCG的生成技能,可能是输出的补充)。