您如何将以下 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 和普通子句(在我的情况下)。我有这两条代码:
件1:
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 .