Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我无法使用 Prolog 的 DCG 符号将大写字母开头的序列解析为变量。例如,如果我有字符串
f a X y Z X
和解析这个字符串的 DCG,有没有办法将每个大写字母解析成一个唯一的 Prolog 变量。例如,解析Y为一个变量,每个解析为X一个变量?预期的应用是构建函子
Y
X
T = f(a,X,y,Z,X)
通过以语句结尾的 DCG 规则
{T =.. [Head|Args]}
如果您使用大写字母作为原子,则必须将它们括在单引号之间。例如“X”和“Z”。
否则,它们将被视为序言变量。
也许您正在寻找term_to_atom/3:
term_to_atom/3
?- term_to_atom(Term, 'f(a,X,y,Z,X)'). Term = f(a, _G304, y, _G306, _G304).