我试图匹配一些语句(例如001 [0,0,1],(1+(1/0))['(',1,+,' ( '1/0 ')', ')'],等等。Prolog DCG:匹配链上的不同符号
我自己做了下面的小DCG。
g3 --> s3.
s3 --> e3.
e3 --> eAdd.
e3 --> eMin.
e3 --> eMul.
e3 --> eDiv.
e3 --> n3.
eAdd --> ['('],e3,['+'],e3,[')'].
eMin --> ['('],e3,['-'],e3,[')'].
eMul --> ['('],e3,['*'],e3,[')'].
eDiv --> ['('],e3,['/'],e3,[')'].
n3 --> d3.
n3 --> n3,d3.
d3 --> [0].
d3 --> [1].
现在我的问题是,它赢得了'牛逼比赛使用的句子 - ,*或/,但它仅使用+适用于递归句子
如:
phrase(g3,['(',1,'+','(',1,'+',1,')',')']).
。
的工作,但
phrase(g3,['(',1,'+','(',1,'/',1,')',')']).
将无法工作。
任何帮助,将不胜感激,谢谢!
哦哇...非常感谢!我完全忘了这个规则! – user452306