我在理解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个参数。但是,我无法理解这些参数是什么意思,也无法理解查询中需要输入的内容吗?]
要运行DCG解析器,您将需要使用phrase/2
或phrase/3
:
phrase(factor(8), Text).
phrase(factor(N), "123", Rest).