[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