【问题标题】:Prolog gives ERROR: Undefined procedure: utterance/1 (DWIM could not correct goal)Prolog 给出 ERROR: Undefined procedure: utterance/1 (DWIM could not correct goal)
【发布时间】:2020-04-06 07:03:33
【问题描述】:

utterance(X) :- 句子(X, [ ])。

句子(开始,结束):- 名词短语(开始,休息,数字), 动词短语(休息、结束、数字)。

名词短语([名词|结尾],结尾,数字):- 名词(名词,数字)。 nounphrase([Article, Noun | End], End, Number) :- 名词(名词,数字),文章(文章,数字)。

动词短语([动词|结尾],结尾,数字):- 动词(动词,数字)。 动词短语([动词|休息],结束,数字):- 动词(动词,数字),名词短语(休息,结束,_)。

文章(a,单数)。 文章(the,单数)。 冠词(the,复数)。

名词(人,单数)。 名词(男人,复数)。 名词(女人,单数)。 名词(女性,复数)。 名词(狗,单数)。 名词(狗,复数)。

动词(喜欢,单数)。 动词(如,复数)。 动词(咬,单数)。 动词(咬,复数)。

错误:未定义的过程:话语/1(DWIM 无法更正目标)

【问题讨论】:

    标签: prolog


    【解决方案1】:

    错误提示你没有加载源代码。将其保存在名为 e.g. 的文件中。 grammar.pl。然后启动您的 Prolog 编译器(似乎您正在使用错误消息文本中的 SWI-Prolog)并将当前工作目录更改为您保存源文件的目录并使用以下查询加载文件:

    ?- [grammar].
    

    或者,在单引号之间使用源文件的完整路径:

    ?- ['/foo/bar/grammar'].
    

    那么您应该能够调用utterance/1 谓词而不会出现该错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多