3

PrologのDCG表記を使用して、大文字で始まるシーケンスを変数に解析するのに問題があります。たとえば、私が文字列を持っている場合

f a X y Z X

そして、この文字列を解析するDCGは、大文字の各文字を一意のProlog変数に解析する方法があります。たとえば、変数に解析Yし、それぞれXを変数に解析しますか?意図されたアプリケーションは、ファンクターを構築することです

T = f(a,X,y,Z,X)

ステートメントで終わるDCGルールを介して

{T =.. [Head|Args]}
4

2 に答える 2

3

If you are using capital letters as an atom, you have to surround them between single quotes. E.g. 'X' and 'Z'.

Otherwise, they will be considered as prolog variables.

于 2011-06-14T17:01:49.920 に答える
3

多分あなたは探しているterm_to_atom/3

?- term_to_atom(Term, 'f(a,X,y,Z,X)').
Term = f(a, _G304, y, _G306, _G304).
于 2011-06-14T21:02:13.677 に答える