问题标签 [dcg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2292 浏览

prolog - 谓词从(swi)序言中的文件中读取整数

我正在浏览 swi-prolog 中的 IO 手册页,但找不到从文件/流中读取整数(或数字)的谓词。在谷歌上也没有找到任何东西:|

我知道怎么写,只是想知道是否有内置的东西,因为我猜它会更快。

0 投票
3 回答
319 浏览

list - 将叶子中的信息放入列表中

我想编写一个程序,将叶子中的信息放在列表中的树中。我试过这样做:

但它给了我L=[_A]。这是为什么?

0 投票
1 回答
1098 浏览

prolog - Prolog --> 预期操作员-操作员

我收到了一些代码作为 uni 任务的示例。我正在尝试让他们的示例运行,这样我就可以查看一个工作示例来制作我需要的类似东西。我修复了那里的大部分错误(他们有“-->”而不是“-->”),但它仍然给我一个错误消息。

我以前从未使用过像最后一行这样的东西,所以我不知道错误是什么。我搜索了有关“-->”运算符的内容,因为我之前也没有使用过它,所以认为可能有一个链接,但我没有找到任何有用的东西。我正在使用 swi-prolog。

0 投票
2 回答
210 浏览

prolog - 重写递归 sicstus prolog 函数

我的目标是有这个输入:

有了这个输出:

使用这段代码,计算一棵树的叶子数量:

我可以通过简单地给函数一个列表而不是树作为输入来获得所需的输出,例如:

这里唯一的问题是它以错误的顺序获取参数(即 build_tree(T,L) 而不是 build_tree(L,T))。

那么,我怎样才能产生相同的结果,而只是交换输入参数呢?我已经尝试了每一个“明显”的解决方案(交换变量),但我猜它可能不像看起来那么容易,因为它是一种递归方法。

0 投票
5 回答
2491 浏览

prolog - 涉及大括号的语法

我正在尝试在 prolog 中解决 DCG 语法并成功了,我一直在评估涉及这些大括号的表达式。 expr( T, [’(’, 5, +, 4, ’)’, *, 7], []),

0 投票
2 回答
2701 浏览

prolog - 在 Prolog 中构建表达式树

我正在寻找一种在 Prolog 中构建表达式树的方法。我已经做了一些实验,并提出了以下工作代码(仅处理常量和加号表达式):

这种方法有没有更简单的替代方法?我是否必须为我计划添加到程序中的每个运算符定义这 4 个案例?

0 投票
4 回答
711 浏览

prolog - 如何在序言中表示“左侧某处”?

在 Prolog 中,如何表示“左侧某处”的情况。例如,有一个List“List”和两个词“X”和“Y”,如何表示规则:X在List中Y的左边某处。

0 投票
3 回答
3287 浏览

prolog - 基于 Prolog 的解释器

我已经涉足函数式编程了。我熟悉(虽然不精通)Haskell 和 PLT 方案。我使用 PLT Scheme 为玩具语言构建了小解释器(参考 PLAI)——我更擅长命令式语言。

任何人都可以指导我使用我可以使用 Prolog 构建我选择的玩具语言的小型解释器的资源吗?

0 投票
4 回答
177 浏览

list - 为什么改变事实的顺序会改变谓词的行为?

这是我的第一个想法:

当我尝试运行-? perm([1, 2, 3], P).时,它显示了堆栈溢出问题。

但是如果我们改变这两个语句的顺序,它就会起作用。

为什么?我是Prolog初学者,请帮忙。

0 投票
3 回答
3086 浏览

io - 如何读入文本文件并将它们打印到 Prolog 中的文件中?

我有一个文本文件,我想将其读入并在屏幕上打印出来并将它们写入一个新的输出文件。所以到目前为止我所做的是

但我只收到一条错误消息,例如,

我应该怎么办?