2014-05-11 50 views
0

我想了解在关于Prolog DCG规则的这种特殊情况下会发生什么。规则是: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 

我只是无法找到正确的“这句话”来运行该语法。 我犯了什么错误?

+0

我怎么能错过呢?坦克再次。 – RRBaldi

回答

2

你有一个简单的拼写错误:试图phrase(fizz_buzz(Msg),Codes),,你会得到

?- run. 
At fizz we have Msg=_G1212 
_G1212 
true