3

これは奇妙に聞こえるかもしれませんが、パーサーで使用されているので、フォームの何かを解析できるようにしたいと思います

foo [bar]

したがって、これはリストで次のように表されます。

[foo、[、bar、[]たぶんそのような単語はDCGで次のように書かれるでしょう:

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

問題は、角括弧が予約文字であるということです。それで、これをプロローグでどのように表すことができますか?

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

"["(引用符で)トリックを行いますか?

于 2010-11-07T23:58:05.723 に答える