使用DCG解析变量

问题描述

| 我在使用Prolog的DCG表示法将以大写字母开头的序列解析为变量时遇到麻烦。例如,如果我有字符串
f a X y Z X
以及解析该字符串的DCG,有什么方法可以将每个大写字母解析为唯一的Prolog变量。例如,将“ 1”解析为一个变量,每个“ 2”解析为一个变量?预期的应用将是构建函子
T = f(a,X,y,Z,X)
通过以该语句结尾的DCG规则
{T =.. [Head|Args]}
    

解决方法

        也许您正在寻找
term_to_atom/3
?- term_to_atom(Term,\'f(a,X,y,Z,X)\').
Term = f(a,_G304,_G306,_G304).
    ,        如果您使用大写字母作为原子,则必须将它们括在单引号之间。例如。 \'X \'和\'Z \'。 否则,它们将被视为序言变量。