13得票2回答
以下正则语言的最小泵送长度

以下是各个语言的最小泵长度: 空语言,p=0,因为该语言没有可泵出的字符串。 (01)*,p=2,因为01是可以被泵出的最短字符串。 10(11*0)*0,p=5,因为10100是可以被泵出的最短字符串。 1011,p=0,因为该字符串无法进行泵操作。 011 U 0*1*,p=1,因为字...

13得票6回答
函数式语言编译器相对于命令式语言编译器的优势

作为对这个问题的跟进 (F#内置不变性相对于C#的优势是什么?),我可以假设 F# 编译器能够进行某些优化,因为它处理的主要是不可变代码。我的意思是,即使开发人员编写了 "Functional C#" 代码,编译器也无法知道所有尝试编码的不可变性,因此不能进行相同的优化,对吗? 总的来说,一...

12得票2回答
语言和虚拟机:难以优化的特性以及原因

我正在为一项研究项目做功能调查。 请列举一个难以优化的主流语言或语言特性,并解释这个特性是否值得付出代价。或者,通过轶事证据来反驳我的理论。在有人指出这是主观问题之前,我要求列举具体的语言或特性示例,以及对这些特性进行优化的想法,或者重要的特性,我还没有考虑到的。此外,任何证明我理论正确或错...

11得票7回答
解析“偏向”(基于缩进)的语言

一种离线语言是指在该语言中,声明的范围(块)由缩进表示。 ...例如Python、Boo、Nemerle、YAML等语言。 那么我的问题是:我应该如何解析这些语言?如何解决制表符与空格的问题(两个制表符或8个空格是否等效)?解析器生成器是否有助于此,还是我必须手动编写词法分析器/语法分...

11得票2回答
S-attributed和L-attributed语法是什么意思?

我正在阅读一本编译器书籍,当它说“S属性文法也是L属性文法”时,有点困惑。无法理解。是否有人可以澄清(提供一个示例会很好)?谢谢。 我正在阅读一本编译器书籍,当它说“一个S-属性文法也是L-属性文法”时,有点困惑。不太理解。请问有人能否通过示例来澄清这个问题吗?谢谢。

11得票4回答
可逆运算平台

来自可逆计算常见问题解答: 为了在给定的比特耗散速率下实现最大可能的计算性能,通常需要在计算的所有级别(设备、电路、体系结构、语言和算法)上显式地实现可逆性——这是一个强烈的猜想,但尚未正式证明,称之为Frank定律。 据我所知,当比特归零时会产生能量损失。如果软件和硬件平台具有反向逻...

10得票6回答
如何设计一个快速的编译器?关键的设计选择是什么?

我想知道如何设计一个编译器,使其编译速度非常非常快。 首先,让我澄清一些问题: 我不是在谈论编译器生成的代码的速度。已经有很多资源可供学习如何优化生成的代码。我找不到的是使编译器本身变快的信息。 我也不感兴趣讨论为什么C++编译器通常比Java编译器慢(例如)。我感兴趣的是可以用什么技术...

10得票2回答
正式构建控制流图

我正在为大学项目编写编译器,并希望将我的抽象语法树转换为控制流图(CFG)。 我认为CFG中的节点(V)应该是AST中的节点。我知道如何算法地构造边集(G=(V,E)),但我很难更正式地编写这个过程。 我已经创建了这个Scala风格的模式匹配(伪代码): def edges(n:Node...

10得票2回答
哪些编程语言具有正则文法?

我很好奇哪些(如果有的话)现实中的编程语言具有正则文法(即所有语法正确的程序集合是正则的)。 另请参见这个问题:哪些编程语言是上下文无关文法?。

10得票2回答
帮助理解LR(1)解析器,表格生成?还有其他资源吗?

我正在修读编译器课程,但是很难理解使用动作/转移表的LR(1)分析算法,以及如何手动生成这些表。目前我们使用Cooper和Torczon的《工程编译器》作为教科书,并且我也阅读了维基百科上关于生成表的页面,但是我仍然不理解这些概念。如果可能的话,是否有人可以推荐任何其他解释解析的好书或在线资源...