40得票3回答
PEG和CFG之间有什么区别?

从这个维基百科页面中可以了解到: 上下文无关文法和解析表达式文法的根本区别在于PEG的选择运算符是有序的。如果第一个备选成功,那么第二个备选将被忽略。因此,与上下文无关文法和正则表达式中的无序选择不同,有序选择是不可交换的。有序选择类似于某些逻辑编程语言中可用的软剪切运算符。 PE...

36得票5回答
是否有一种标准的C++语法?

标准是否规定了正式的 C++ 语法? 我搜过了,没有找到相关内容。 另外,我希望详细了解一下 C++ 语法,例如它属于哪个语法类别等。任何指向正确方向的链接都会有所帮助。 所谓语法类别是指: 引自这里。

35得票3回答
乔姆斯基谱系的通俗易懂解释

我正在尝试找到一份简明易懂(即非正式)的关于乔姆斯基所提出的四个形式语法层次(无限制文法,上下文有关文法,上下文无关文法,正则文法)的解释。 自我学习形式语法以来已经过了很久,现在各种定义对我来说都很混淆。我想要强调的是,我不是在寻找你可以在任何地方找到的正式定义(例如这里和这里——我和其他...

31得票6回答
为什么自底向上的解析比自顶向下的解析更常见?

看起来递归下降解析器不仅是最容易解释的,而且是最简单的设计和维护。它们不受限于LALR(1)文法,并且普通人也能理解代码。相比之下,自底向上解析器对它们能够识别的语法有限制,并且需要通过特殊工具生成(因为驱动它们的表格几乎无法手动生成)。 那么,为什么自底向上(即移进-规约)解析比自顶向下(...

30得票3回答
如何确定一种语言是否是上下文无关的?

我怎样才能知道一种语言是否是上下文无关的?

30得票5回答
如何为编程语言定义语法

如何为新编程语言(命令式编程语言)定义一个上下文无关文法。 换句话说:当你想从零开始创建一个新的编程语言时,该如何进行。

29得票2回答
Java、C++、C#等编程语言如何解决尖括号<和>的语法歧义?

我曾经认为C++是一种"奇怪"的语言,因为它在使用&lt;和&gt;时存在许多模糊不清的地方。但是,当我尝试实现一个解析器后,我发现了一个例子,这个例子几乎破坏了每一种使用&lt;和&gt;作为泛型类型的语言: f(g&lt;h, i&gt;(j)); 这段代码的语法可以被解释为一个普通...

29得票2回答
终结符和非终结符是什么?

我正在阅读Rebol 维基百科页面。 "解析表达式是用解析语言编写的,就像执行语言一样,它是数据交换语言的面向表达式的子语言。与执行语言不同,解析语言使用表示运算符和最重要的非终结符的关键字" 你能解释一下什么是 终结符 和 非终结符 吗?我已经读了很多关于语法的东西,但是不理解它们的...

28得票2回答
为什么C语言的BNF语法允许使用空序列的init-declarators进行声明?

当我查看C语言的BNF语法时,我认为一个声明规则的产生式看起来很奇怪(根据https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm):&lt;d...

28得票1回答
LL(1)解析器中FIRST和FOLLOW集的目的是什么?

有人能解释一下在LL(1)文法中如何使用FIRST和FOLLOW吗?我知道它们被用于语法表的构建,但我不明白具体应该怎么做。