我无法理解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个参数。但是,我无法理解这些论点的意思是什么,也不能理解为了使查询说“是”而需要投入的内容?
答案 0 :(得分:0)
要运行DCG解析器,您将需要使用phrase/2
或phrase/3
:
phrase(factor(8), Text).
phrase(factor(N), "123", Rest).
phrase
的第三个参数是输入的剩余部分(或者考虑到DCG的生成技能,可能是输出的补充)。