文法用の簡単なパーサーを書こうとしています。パーサーは解析ツリーを作成する必要はなく、文が文法と一致するかどうかを認識するだけです。これまでのところ、DCG表記を使用して次の述語があります。
program-->[].
program-->stmt_list.
stmt_list-->stmt,stmt_list.
stmt-->[id,:=],expr;[read],[id];[write],expr.
expr-->term, term_tail.
term_tail-->add_op,term,term_tail.
term_tail-->[].
term-->factor, factor_tail.
factor_tail-->mult_op, factor, factor_tail.
factor_tail-->[].
factor-->[(expr)].
factor-->[id].
factor-->[number].
add_op-->[+].
add_op-->[-].
mult_op-->[*].
mult_op-->[/].
program([read、id]、[])などのクエリを使用します。本当の応答が返ってくるはずですが、間違った応答が返ってきます。これを引き起こしている何が欠けていますか?ご協力ありがとうございました。