这可能听起来很奇怪,但它在解析器中使用,我希望能够解析某些形式
FOO [巴]
所以这将在列表中表示为:
[foo,[,bar,[] 也许这样的词会在DCG中写成:
x --> id [[] arg []]
问题是方括号是一个保留字符,那么如何在prolog中表示呢?
答案 0 :(得分: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 = [].
答案 1 :(得分:0)
"["
(引号中)是否可以解决问题?