DCG(Definite Clause Grammars)是一种在Prolog中描述列表的简洁方法。
我正在尝试在 Prolog 中实现数学表达式的 DCG,因为我想做用该语言实现计算器的基本练习,这是我的代码: 莱克斯(添加,'+')。 lex(子, '-'...
我正在尝试编写一个接受 u0v 形式的字符串的 dcg,其中 u 和 v 是字母表 {1, 2, 3} 上的字符串,u 是 revere 中的 v。我所拥有的似乎有效,因为问题的第一个答案......
我正在尝试在 prolog 中使用 DCG 创建斐波那契数列。我有这个作为初学者,但是我不知道为什么代码没有被执行。 下面是代码: 撒谎...
我是 Prolog 新手,注意到 ' 和 " 给出了不同的行为,但很好奇为什么。具体来说,在加载文件时, ?- ['test1.pl']. 有效,而 ?- ["test1 .pl"]。没有。
鉴于程序 foo([]) --> []. foo([开始|休息]) --> 字母数字(开始), foo(休息)。 alphanum(Ch) --> [Ch], { char_type(Ch, alnum) }. 我怎样才能使查询 length(I, 2), phrase(foo(C)...
我想在 Prolog 中替换 DCG 语法中的一系列标记。换句话说,用子列表 B:[b] 替换序列或子列表 A:[a,a,a,a]。 链 -->
我想找到最雄辩和最有效的方法,从算法上讲,来计算 SWI-Prolog 中某些模式的出现次数。 现在,我的解决方案使用 DCG,如下所示:
我的Prolog代码如下:expression-->first,operator,second.first-->[X].operator-->['+'];['-'].second-->[X]. 编译后,机器在命令中响应 "是"......。
在Prolog中处理语法规则时,是否可以定义无限数量的终端?下面的例子描述了这个问题:selection-->([if,'('),condition,[')',then,'{'],...。
我正在写一个Lisp到C的翻译器,我有一个处理字符串的问题。这是一段将单利斯普函数转换为C语言等价函数的代码: define(F) --> fun_unary(F),!fun_unary(F) ...
我希望有一些更通用的解析器,比如说paren,它可以接受一个解析器,并用括号把它包起来:paren(Parser, Result) --> "(", some_magic_dcg_call(Parser, Result), "...
我如何在prolog中建立一个谓词,接收一个数字和一个列表,我必须通过尾部插入列表中的数字我试过通过头部插入列表中的数字:insert(H,[根据需要扩展它并 "返回"。
我在理解Prolog中DCG的语法和用法时遇到麻烦。我正在使用的代码是一种语法解析器,类型为“ a = 1 * 2 +(3-4)/ 5”,这里是对它的选择:factor(factor(...( >
我在理解Prolog中DCG的语法和用法时遇到麻烦。我正在使用的代码是一种语法解析器,类型为“ a = 1 * 2 +(3-4)/ 5”,这里是对它的选择:factor(factor(...( >
我发现prolog DCG功能强大,但是我不确定是否可以提取某些2D列表,以便可以用上下文无关文法S表示它-> [A | B] A-> [0,0,0,0,0] A-> NULL B-> [...
我有一些文本文件要解析,但是示例停止和启动的顺序可能不同。 Stop可能出现在第一个或最后一个,这是一个虚拟的例子,因为有多个...
我正在尝试实现一个采用一组{a,b,c,d} *形式的字符串的dcg。我遇到的问题是,如果我有一个查询形式为s([a,c,b ],[]),它返回true,这是正确的答案,但是当i ...
我必须在PROLOG中实现一个上下文无关的解析器,该解析器使用可以生成的语法:我看到了一个教程。我去了图书馆。在图书馆,我看到了一个教程。 (我知道这是不正确的...
[这是Mat的答案中的较早问题的后续问题,从此e([number(0)],t1,Uc0,Uc0,Bc0,Bc0)-> []。 e([number(1)],t2 ...
因此,我目前正在尝试使用包含课程和参加该课程的任何人的学生证的文本文件来实现类似于该树的功能。课程([('MATH2221',[...