在 Prolog 中构建表达式树
我正在寻找一种在 Prolog 中构建表达式树的方法。我已经做了一些实验并提出了以下工作代码(仅处理常量和加号表达式): const(_). plus(_, _). eval(…
重写递归 sicstus prolog 函数
我的目标是有这个输入: L = [a,b,c], build_tree(L,T). 使用这个输出: L = [1,30,kth,5], T = b(l(a),b(l(b),b(l(c)))) ? yes 使用这个代码,可以计…
使用phrase_from_file读取文件的行
我一直在尝试使用 phrase_from_file 和语法规则解析包含整数行的文件 line --> I,line,{integer(I)}. line --> ['\n']. : phrase_from_file(line,'in…
Prolog:将 DCG 语法与其他限制相结合
Prolog 的 DCG 以及我能够快速生成适合特定语法的所有可能结构的速度给我留下了深刻的印象。 但我想将此搜索与其他约束结合起来。例如,定义一个复杂…
这段代码是通过扩展 Prolog DCG 尾递归生成的吗?
以下代码是一个 DCG,用于替换 Request 中所有出现的 Find 和 Replace 。将答案放入 Result 中。感谢 mat 在这个问题。 eos([], []). replace(_, _) -…
使用 prolog DCG 来查找和查找替换 - 代码审查
我想出了以下代码来替换 Request 中所有出现的 Find 和 Replace 。将答案放入 Result 中。这是使用 DCG,因此它们都是字符代码列表。客户端代码将使用…
在 Prolog 中解析而不进行剪切?
我发现了这个在 Prolog 中解析 lisp 的好片段(来自此处): ws --> [W], { code_type(W, space) }, ws. ws --> []. parse(String, Expr) :- phrase(e…
给定替换 S 和列表 X,如何将 S 应用于 X
假设我有一个替换 S 和列表 Xs,其中 Xs 中出现的每个变量也出现在 S 中。我如何找到列表S(Xs),即通过将替换S应用于列表Xs而获得的列表。 更具体地说…
在 SWI-prolog 中调试 - 未绑定变量
考虑以下 Prolog 代码。它在其输入中编辑特定类型的行,并打印出剩余的行,而不进行任何更改。它使用一个名为 rule 的 DCG,该 DCG 未包含在下面,因…
使用 Prolog DCG 分割字符串
我正在尝试使用 DCG 将字符串拆分为用空格分隔的两部分。例如“abc def”应该给我返回“abc”和“abc def”。 “定义”。该计划& DCG如下。 main:- pr…
Prolog 问题 - 简单语法实现
如果我有以下语法: S → ε S → a S b S 如何在 Prolog 中实现它? 我尝试了这个: isMatched([]). isMatched([a,b]). isMatched([a|[S1|[b|S2]]]) …