Разбор переменных с использованием DCG - PullRequest
3 голосов
/ 14 июня 2011

У меня проблемы с анализом последовательностей, которые начинаются с заглавных букв в переменные с использованием нотации Пролога DCG.Например, если у меня есть строка

f a X y Z X

и DCG, которая анализирует эту строку, есть ли способ проанализировать каждую заглавную букву в уникальную переменную Prolog.Например, синтаксический анализ Y для переменной и каждый X для переменной?Предполагаемое применение состоит в том, чтобы построить функтор

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

с помощью правила DCG, заканчивающегося оператором

{T =.. [Head|Args]}

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Может быть, вы ищете term_to_atom/3:

?- term_to_atom(Term, 'f(a,X,y,Z,X)').
Term = f(a, _G304, y, _G306, _G304).
3 голосов
/ 14 июня 2011

Если вы используете заглавные буквы в качестве атома, вы должны заключать их в одинарные кавычки. Например. 'X' и 'Z'.

В противном случае они будут считаться прологическими переменными.

...