我正在尝试理解在这种关于Prolog DCG规则的特殊情况下会发生什么。规则如下:
fizz_buzz(Msg) --> anything, fizz(Msg), anything, buzz, anything.
anything --> [].
anything --> [_], anything.
fizz(Msg) -->
"fizz",
{
format('At fizz we have Msg=~w~n', [Msg])
}.
buzz -->
"buzz".
run :-
atom_codes("blah blah fizz blah buzz", Codes),
phrase(fiz_buzz(Msg), Codes),
write(Msg).并得到了:
ERROR: phrase/3: Undefined procedure: fiz_buzz/3
ERROR: However, there are definitions for:
ERROR: fizz_buzz/3我只是找不到正确的“短语”来运行这个语法。我犯了什么错误?
发布于 2014-05-11 23:28:47
你有一个简单的拼写错误:尝试phrase(fizz_buzz(Msg),Codes),,你会得到
?- run.
At fizz we have Msg=_G1212
_G1212
true https://stackoverflow.com/questions/23594413
复制相似问题