如何在Prolog中评估DCG解析器/生成器?

问题描述 投票:1回答:1

我在理解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个参数。但是,我无法理解这些参数是什么意思,也无法理解查询中需要输入的内容吗?]

prolog dcg
1个回答
0
投票

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

phrase(factor(8), Text).
phrase(factor(N), "123", Rest).
© www.soinside.com 2019 - 2024. All rights reserved.