2010-11-07 23 views
3

這可能聽起來很奇怪,但它是在一個解析器使用,我希望能夠解析形式如何在prolog中寫一個方括號?

富[巴]

因此,這將在一個列表來表示的東西爲:

[富,[,酒吧,[] 也許這樣的詞將在DCG寫成:

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

問題是方括號是一個保留字符,所以我怎麼能在prolog中表示這個?

回答

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 = []. 
+0

我如何從文件中的方括號中讀取並將它們放在單個逗號中? – Tom 2010-11-16 01:42:57

+0

這是一個伎倆,謝謝隊友! – Tom 2010-11-16 01:54:00

0

請問"["(引號)有訣竅嗎?

+0

不,不。 – Tom 2010-11-08 01:51:06

+0

好啊。我想不出別的什麼,對不起。 – Cameron 2010-11-08 02:25:06