问题标签 [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 投票
1 回答
1069 浏览

prolog - 算术计算机

我在序言中需要一些帮助,这对我来说很新。我必须设计一台小型算术计算机。要评估的表达式将表示为一个列表,例如:

我试图通过设计两个谓词来做到这一点,一个称为 parse 来转换我的列表,例如:

另一个用于评估新表达式。

我的第一部分有问题,有人可以帮我写代码吗?

0 投票
1 回答
893 浏览

prolog - Prolog:如何使用 DCG 解析器解析 if - then - else 语句

是否可以使用 Prolog DCG 来解析“if-then-else”语句?如果是这样,考虑到我必须匹配特定的“if”“then”“else”字符串,如何解析这样的语句。如果这不可能,我的替代方案是什么?

0 投票
7 回答
35865 浏览

list - 在 Prolog 中展平列表

我只用 Prolog 工作了几天。我明白一些事情,但这真的让我很困惑。

我想写一个函数来获取一个列表并将其展平。

该函数取出列表的内部结构。

这是我到目前为止所拥有的:

现在,当我打电话时这有效:

但是当我打电话查看我输入的列表是否已经展平时,返回false而不是true

为什么一方面有效,另一方面无效?我觉得我错过了一些非常简单的东西。

0 投票
2 回答
664 浏览

prolog - Prolog谓词调用

在以下教程中:http ://www.csupomona.edu/~jrfisher/www/prolog_tutorial/7_3.html

有部分:

现在我对 c(F,X,[]) 和 q(F,X,[]) 部分感到非常困惑,因为它似乎与我所见过的任何东西都不匹配,c 只从什么中获取一个参数我可以说,这些参数似乎对 q 没有意义。请帮助我了解这里发生了什么。

0 投票
1 回答
558 浏览

prolog - Prolog:使用谓词“名称”在音节上划分单词

我需要从用户那里读入一个单词,然后根据以下两条规则之一将其拆分为音节:元音-辅音-元音或元音-辅音-辅音-元音。

看起来谓词“名称”不起作用,应该是输出中的单词,而不是列表
你能帮忙吗?

0 投票
1 回答
117 浏览

prolog - DCG 中的连接类型

我正在尝试使用 prolog 为音乐环境开发一个简单的 DCG。

我通过以下方式定义了音符:

上面的“ton”和“sup”参数与音符所属的和弦有关。音符 a、d 和 f 属于 * ton *ic 和弦,音符 b、e 和 g 属于 * sup *ertonic 和弦(在 D 大调中)。

现在,我想介绍一个进一步的“音符”符号,它有两个参数——一个用于和弦,一个用于音符持续时间。例如,

我的问题在于 note(X),[2] 是一个列表 [a,2]。我需要它的形式 [a2]。

不使用变量 X 可以解决这个问题:

但是由于我的表示中有七个不同的和弦和七个不同的音符长度,这将涉及很多不必要的(我认为)代码。

我不确定如何连接 note(X) 和整数 2,我也不确定应该在哪里完成。是否可以在重写规则的右侧连接事物?

谢谢,

肖恩

0 投票
1 回答
111 浏览

if-statement - 通过文本流找到最大值

我需要可以识别文本中最大值的程序。首先在其中流式传输一个文本文件,然后

我逐个字符地获取信息,但无论是否为正方形,都无法进行计算和结果。如果是正方形,则给出sample.txt坐标中的数字。

0 投票
2 回答
703 浏览

prolog - 将 Prolog 函子转换为具有差异列表的函子

我正在为 Prolog (SWI) 做作业,但不知道如何完成这项工作:

我有函子:

它告诉给定列表是否是回文。

对于我的作业,我必须编写一个palindrome/2没有append/3和有差异列表的函子。

我知道差异列表是 的一种形式[Y|X]-X,但我不明白如何使用它以及它如何替换附加函子。

有人可以向我解释一下吗?

0 投票
5 回答
738 浏览

list - 序言列表高原

刚刚被介绍给prolog,试图完成一些简单的练习,但我一直在这个问题上卡住了。我正在尝试编写一个输出输入列表的所有子列表的程序,其中每个子列表的长度> 1,并且不能扩展到更大的子列表。它还将输出子列表列表中的起始位置。所以一个样本输出将是

我仍然对整个声明式的事情感到很困惑,并且在切换命令式模式时遇到了很多麻烦。我在想我希望我的程序做类似的事情

所以这行不通,从我可以说的几个原因来看。我没有重置“计数”,所以它可能会将所有子列表的值加起来?有没有办法解决这个问题?我的基本情况也可能不是我想要的——我只是不确定它应该是什么?我可能也错过了其他东西......非常感谢任何帮助!:) 谢谢!

0 投票
2 回答
3012 浏览

list - 从列表列表中获取元素

是否可以从 Prolog 的列表中获取所有元素?

类似的东西:我们有 getElements([[[a,b,[c]],d,e],f,g,[h,[i,j]]],S) 结果是:S = [a ,b,c,d,e,f,g,h,i,j] ...

感谢帮助。