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