3

这听起来可能很奇怪,但它是在解析器中使用的,我希望能够解析某种形式的东西

富[酒吧]

因此,这将在列表中表示为:

[foo, [, bar, [] 也许这样的词在 DCG 中会写成:

x --> id [[] arg []]

问题是方括号是保留字符,那么我该如何在prolog中表示呢?

4

2 回答 2

4

你不能把你的方括号当作原子(即'['']'),以及其他所有东西吗?

怎么样,例如

label1(T) --> id(X), label2(Y), {T =.. [X, Y]}.
label2(Y) --> ['['], innerexp(Y), [']'].
id(X) --> [X].
innerexp(Y) --> [Y].

执行:

?- phrase(label1(T), [foo, '[', bar, ']'], Rem).
T = foo(bar),
Rem = [].
于 2010-11-08T03:40:39.937 回答
0

Does "[" (in quotes) do the trick?

于 2010-11-07T23:58:05.723 回答