我正在尝试编写一个将序言翻译成正式英语句子的程序。 这是我的代码:
sentence --> [if],[the], first_phrase, second_phrase.
first_phrase --> predicate, det , assertion, det, noun.
second_phrase --> [then],[the], predicate, det , noun.
assertion --> noun, [and], [the], predicate.
det --> [are].
det --> [is].
noun --> [flat].
noun --> [webbed].
noun -->[waterfowl].
predicate --> [feet].
predicate --> [bill].
predicate -->[order].
sentence(S1,S3) :- first_phrase(S1,S2), second_phrase(S2,S3).
first_phrase(S1,S3) :- second_phrase(S1,S2), noun(S2,S3).
second_phrase(S1,S3) :- assertion(S1,S2), first_phrase(S2,S3).
det([is|X], X).
det([are|X], X).
此代码的输出如下所示: X = [if,the,feet,are,flat,and,feet,是......) 所以它缺少一些单词,它应该显示这样的东西: 如果脚是蹼状的,而且钞票是平的,那么订单就是水禽。
我应该添加或修复什么才能获得此结果?
答案 0 :(得分:0)
将此代码添加到源代码文件中:
remove_max_depth:-
current_prolog_flag(toplevel_print_options,Options),
select(max_depth(_), Options, NOptions)->
set_prolog_flag(toplevel_print_options, NOptions); true.
:-remove_max_depth.
过程remove_max_depth
将删除对顶级显示的最大项目数的约束,并且当您查阅该文件时,指令:-remove_max_depth.
将执行该过程。