dcg

    2熱度

    1回答

    我開始學習如何使用DCG。我想知道什麼大括號{...}用於?何時(以及何時不需要)?例如: read_lines --> { read_line_to_codes(current_input, Codes) } , ( { Codes == end_of_file } -> [] ; { atom_codes(Line, Codes) } ,

    1熱度

    2回答

    我正在嘗試創建一個顯示問題解決方案的程序,我需要一種方法來顯示它創建的解決方案。我有兩個可以用來解決問題的操作,它們被稱爲重要的順序。 test(a) :- write('use a '). test(b) :- write('use b '), fail. test(c) :- test(a), test(b), test(a). test(c) :- test(a), test(a).

    5熱度

    3回答

    這個問題是指材料在本書的第3章:序言,Clocksin和Mellish 編程,埃德5 在這本書的第72頁,一個使用程序的差異列表顯示: partsOf(X,P):- partsacc(X,P,Hole) , Hole=[]. partsacc(X,[X|Hole],Hole):-basicpart(X). partsacc(X,P,Hole):- assembly(X,Subparts),

    1熱度

    2回答

    我想在Prolog中編寫gen(G,S)以生成給定語法G的有效序列S,其中G是格式語法[非終端列表],[終端列表],[規則列表],[開始序列])。規則採用格式規則(nt,[x]),其中x可以是非終端和/或終端的任何列表。 例如(規則(a,[t]),規則(a,[z]),規則(b,[y]),規則(b,[a,q])],[a,b]),X)。 返回: X = [t,y]。 X = [t,t,q]。 X =

    3熱度

    1回答

    你好,我是新的Prolog和DGC.I想寫一個DCG來解析時間表達式,如10.20或12點。我怎麼能檢查10.20是否有效的表達式或不爲Olcock寫了一些代碼。 oclock --> digit1,phrase1. digit1 --> [T],{digit1(T)}. digit1(1). digit1(2). digit1(3). digit1(4). digit1(5).

    2熱度

    3回答

    我必須編寫解析(Tkns,T),它以一個標記列表的形式接受一個數學表達式並找到T,並返回一個表示抽象語法的語句,尊重操作和相關性的順序。 例如, ?- parse([ num(3), plus, num(2), star, num(1) ], T). T = add(integer(3), multiply(integer(2), integer(1))) ; No 我已經嘗試實現+和*

    6熱度

    3回答

    我想了解更好地使用DCG。爲了做到這一點,我試圖將LearnPrologNow書中的一些練習翻譯成DCG記法。但是,我失敗了。 我試圖編寫一個程序,簡單地命名列表中的最後一個元素。就這樣。我只是想不出正確的DCG語法來做到這一點。我想我想出了'基本情況'應該是: last - > [X | []]。 其中X是最後一個元素。我如何讓Prolog遞歸下去?還是我以錯誤的方式思考DCG?

    6熱度

    2回答

    我是新來的prolog,所以這對我來說是一個很大的挑戰。 我應該在Prolog中實現一個簡單的C語言。 the ultimate goal is to be able to execute something like this: ?- run([begin,a,:=,10,while,a,>,5,begin,write,a,a,:=,a,-,1,end,end]). and get: 1

    6熱度

    2回答

    我想創建這樣的語言得到接受一個DCG: Ç bbbcbbb bbacbba abacaba aababacaababa 正如你可以看到這個手段有一個特定的順序a和b,然後是一個c,然後又是與c之前完全相同的順序。如果不符合這些條件,則將失敗。 我目前在這裏與我的做法(的作品,但也承認錯誤的話) s --> x, s, x. s --> [c]. x --> [a]. x --> [b].

    7熱度

    3回答

    以從Introduction to Latin Wikiversity例如,考慮了一句: the sailor gives the girl money 我們可以在序言與DCG用這堆規則處理這個相當優雅: sentence(s(NP, VP)) --> noun_phrase(NP), verb_phrase(VP). noun_phrase(Noun) --> det, noun(Noun