dcg

    2热度

    2回答

    我试图匹配一些语句(例如001 [0,0,1],(1+(1/0))['(',1,+,' ( '1/0 ')', ')'],等等。 我自己做了下面的小DCG。 g3 --> s3. s3 --> e3. e3 --> eAdd. e3 --> eMin. e3 --> eMul. e3 --> eDiv. e3 --> n3. eAdd --> ['('],e3,['+'],e3,

    4热度

    1回答

    说我有一个看起来像这样的数据库: regular_player('Xi'). regular_player('Doyle'). expert_player('Houdini'). expert_player('Gandhi'). % don't allow expert players to be paired together start --> good_pair. good

    2热度

    1回答

    对我来说这似乎很好,但它总是给人错误的...我无法理解为什么。 letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}. 谢谢。

    1热度

    1回答

    它的工作SWI-Prolog的4之间的差异正在 :- set_prolog_flag(double_quotes, codes). letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}. 在SWI搜索-Prolog网站,我发现: Mode--------------double_quotes-----------back_quotes Versi

    2热度

    1回答

    我想将Prolog谓词转换为DCG代码。即使我熟悉语法语言,我也会遇到一些麻烦,要了解DCG如何处理列表以及我应该如何使用它。 其实,这是我的谓词: cleanList([], []). cleanList([H|L], [H|LL]) :- number(H), cleanList(L, LL), !. cleanList([_|L], LL) :-

    -1热度

    1回答

    E -> T是什么意思?变量E意味着变量T? 这所链接的代码: e(TS,R) :- t(TS,R). 感谢您的帮助

    2热度

    2回答

    我正在玩DCG,我有这个代码。这显示x号码0 s和x号码A s。 y --> test(Count), as(Count). test(0) --> []. test(succ(0)) --> [0]. test(succ(succ(Count))) --> [0], test(Count), [0]. as(0) --> []. as(succ(Count)) --> [a],as

    2热度

    2回答

    我试图通过将序列列表重新转换为BST来“颠倒”序列遍历。 BST的谓词形式为node(Value,Left,Right)或leaf,所以空树只是leaf,一个节点的树是node(_,leaf,leaf)。 给定谓词enumerate_bst(Elems,Bst),目标是将Bst与排序列表Elems的所有可能性匹配。例如(注setof/3): ?- setof(Bst,enumerate_bst([

    2热度

    1回答

    我在prolog中编写了DCG(形容词短语和介词短语),当我试图运行它时,通过输入ip([every,boy,loved,some,girl]),它显示出本地堆栈。我意识到nbar有问题。有人可以帮我吗?非常感谢。 %tree treeP(Term):- % Print the tree assuming indentation 0 treeP(0,Term), %

    0热度

    1回答

    以下Prolog打印done的目标为test1和test2,但不是test3。我的理解是这个代码中的match_test2和match_test3应该是等效的。如何通过断言创建DCG规则? setup(['t','e','s','t']). match_test1 --> ['t','e','s','t']. test1 :- setup(C), phrase(match