2011-06-14 65 views
3

我在使用Prolog的DCG表示法解析以大寫字母開頭的變量時遇到問題。舉例來說,如果我有串使用DCG解析變量

f a X y Z X 

和DCG來解析這個字符串,有沒有什麼方法來分析每個大寫字母成一個獨特的Prolog變量。例如,將Y解析爲變量並將每個X解析爲變量?預期的應用將通過如果你使用大寫字母作爲一個原子與聲明

{T =.. [Head|Args]} 

回答

3

也許你正在尋找term_to_atom/3

?- term_to_atom(Term, 'f(a,X,y,Z,X)'). 
Term = f(a, _G304, y, _G306, _G304). 
+0

這正是我一直在尋找的謂語。謝謝。 – danportin 2011-06-15 11:52:22

3

結束了DCG規則打造的仿

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

,你必須圍繞它們的單引號之間。例如。 'X'和'Z'。

否則,它們將被視爲序言變量。