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