Как бы вы перевели следующие DCG в обычные определенные пункты PROLOG?
expr_regular --> cor_ini,numero,guion,numero,cor_fin.
cor_ini --> ['['].
numero --> ['0'];['1'];['2'];['3'];['4'];['5'];['6'];['7'];['8'];['9'].
cor_fin --> [']'].
guion --> ['-'].
РЕДАКТИРОВАТЬ: Я хочу перевести DCG в обычные предложения PROLOG, потому что я не могу использовать и DCG, и обычные предложения в одном и том же коде (в моем случае). У меня есть две части кода:
Piece1:
traducir(Xs, Ys) :- maplist(traduccion, Xs, Ys).
traduccion('^',comeza_por).
traduccion('[',inicio_rango).
traduccion('0',cero).
traduccion('-',a).
traduccion('9',nove).
traduccion(']',fin_rango).
Пример того, как его использовать:
?- traducir(['[','0','-','9',']'],[]).
true .
И Часть2:
traducir--> cor_ini,numero,guion,numero,cor_fin.
cor_ini --> ['['].
numero --> ['0'];['1'];['2'];['3'];['4'];['5'];['6'];['7'];['8'];['9'].
cor_fin --> [']'].
guion --> ['-'].
Пример того, как его использовать:
traducir(['^','[','0','-','9',']'],X).
X = [comeza_por, inicio_rango, cero, a, nove, fin_rango].
Я хочу объединить оба кода в один, чтобы проверить, хорошо ли написан traducir (если он соответствует DCG), и перевести то, что вы вводите в текст, поэтому итоговая программа должна выполнить следующее:
?- traducir(['^','[','0','-','9',']'],X).
X = [comeza_por, inicio_rango, cero, a, nove, fin_rango].
?- traducir(['[','0','-','9',']'],[]).
true .