我正在尝试匹配一些句子(例如 001 [0,0,1], (1+(1/0)) ['(',1,+,'(',1,/,0,')' ,')'], 等等。
我已经让自己跟随小型 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,')',')']).
不会工作。
任何帮助将不胜感激,谢谢!