这听起来可能很奇怪,但它是在解析器中使用的,我希望能够解析某种形式的东西
富[酒吧]
因此,这将在列表中表示为:
[foo, [, bar, [] 也许这样的词在 DCG 中会写成:
x --> id [[] arg []]
问题是方括号是保留字符,那么我该如何在prolog中表示呢?
这听起来可能很奇怪,但它是在解析器中使用的,我希望能够解析某种形式的东西
富[酒吧]
因此,这将在列表中表示为:
[foo, [, bar, [] 也许这样的词在 DCG 中会写成:
x --> id [[] arg []]
问题是方括号是保留字符,那么我该如何在prolog中表示呢?
你不能把你的方括号当作原子(即'['
和']'
),以及其他所有东西吗?
怎么样,例如:
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 = [].
Does "["
(in quotes) do the trick?