如何在prolog中写一个方括号?

时间:2010-11-07 23:53:48

标签: prolog grammar context-free-grammar dcg

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

  

FOO [巴]

所以这将在列表中表示为:

  

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

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

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

2 个答案:

答案 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)

"["(引号中)是否可以解决问题?