问题标签 [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.
string - 我可以在 Prolog 中从字符列表转换为字符串或术语吗
我用
从文件中读取一行..首先有没有办法读取一行并将其分配给序言中的一个术语?如果不是,我设法读取一行并将其放入此 char 列表.. 现在此 char 列表包含空格.. 这很糟糕.. 所以我想将它转换为 prolog 中的术语或字符串,以便我可以处理它更容易..空间不能是原子,所以这是一个问题..
我很感激帮助!
string - Prolog:删除字符流中的多余空格
Prolog 的总新手。这个让我有点沮丧。我下面的“解决方案”是我试图使 Prolog 程序化......
如果需要,这将删除空格或在逗号后插入空格,也就是说,直到遇到句点:
目标:我想知道如何在逗号之前删除任何空格。
以下工作,但在很多层面上都是错误的,尤其是“退出”!
prolog - 需要关于 Prolog DCG 的问题/练习
您是否知道我在哪里可以找到涉及 DCG 的序言问题/练习列表,以便我可以更好地理解这个概念?
我已经阅读了一些关于它的规范,但是学习它的最好方法是练习它。
谢谢!
prolog - 问题 - 序言中的形式语言
我正在尝试构建一个 DCG,它可以识别与此表单匹配的所有列表:a^n b^2m c^2m d^n
。
我写了以下规则:
s --> [].
s --> ad.
ad --> a, ad, d.
ad --> bc.
bc --> b, b, bc, c, c.
bc --> [].
a --> [a].
b --> [b].
c --> [c].
d --> [d].
当我尝试评估具有这些规范的字符串时,例如 list [a,b,b,c,c,d]
,它可以工作。但是,当我尝试评估查询phrase(s, X)
以查看此语法返回的所有可能字符串时,它会循环到无穷大。
我构建 DCG 的方式有问题吗?
prolog - Prolog DCG:从编程符号转换为逻辑符号
我试图从这个符号转换:
到标准的逻辑符号,即类似的东西and(A,B), or(A,B), neg(A)...
我认为我这样做的好方法是使用 DCG(我提出这个问题是因为我想练习 DCG)。任何想法为什么我的转换不起作用?到目前为止,我刚刚写了析取和得到变量的情况。我想要的答案应该是 or(atom(X),atom(Y))。
prolog - Prolog:DCGS - 将数字转换为英文
我正在 Prolog 中练习使用 DCG。我取一个像 123 这样的整数,将它“分解”成一个列表,即 [1,2,3],然后我想使用 DCG 规则来获得输出一二三。到目前为止,我可以将一个整数列表(例如 [1])转换为一个整数,但我不知道当涉及到一个列表时该怎么做。我想尽可能多地使用 DCG,因为这是我正在练习的。这是我当前的代码:
不使用 DCG 的可能解决方案是我之前写过的,但我想知道如何使用 DCG 编写它。
prolog - 序言:简单的 DCG a^nb^n
我一直在尝试习惯在 Prolog 中使用 DCG 并且失败了。
如何定义一组语法规则来接受语言 a^nb^n?
例如 aaaabbbb 或 ab 等...
谢谢 :)。
prolog - 在 Prolog 中连接字符串列表
我正在编写一个 Lisp 到 C 的翻译器,但我在处理字符串时遇到了问题。这是一个将一元 Lisp 函数转换为 C 等价物的代码:
现在我想读取任意数量的函数并将它们作为单个字符串返回。以上funs
是我能想到的最好的,但它的工作原理是这样的:
虽然我想要这样的东西:
这样我就可以很好地swritef
进入一个完整的程序,在#include
s 和 main() 之间。另一种解决方案是修改最高级别的转换器来处理列表。它现在看起来像这样:
我将如何做这两个?我正在使用 SWI Prolog。
regex - 用 Prolog 编写的正则表达式解析器
几个小时以来,我一直在努力解决这个家庭作业问题。我们必须用 Prolog 解析一个正则表达式。在大多数情况下,我使用的谓词都有效,但是有一些正则表达式和字符串组合会导致它们在 SWI-Prolog 中耗尽堆栈空间。这是一个包含两个正则表达式字符串组合的示例,一个有效,一个无效:
第一个有效,第二个用完堆栈。
这是我正在使用的谓词:
我不确定我需要进行哪些更改才能使其正常工作,但我不确定还能做什么。
此外,将 List :- append(List1, List2, List) 更改为 [H|T] 不会对其中一个示例进行评估。
io - 在 Prolog 中逐行读取文件
我想读取一个纯文本文件并对每一行应用一个谓词(谓词包含write
输出的内容)。我该怎么做?