我正在为个人使用和教育设计一种编程语言。参考编译器的第一个版本将源代码编译为其他语言,如C语言。我应该记住哪些事项以确保编译到另一个源和二进制可执行文件的编译时间很快?还有什么好知的吗?
即使我谈论编译速度,问题的主要焦点是语言,而不是编译器。
答案 0 :(得分:2)
如果您的重点是学习编译器设计,我认为编译速度不是您的首选。我建议你首先使用递归后代技术手动实现自上而下的解析器,这很容易和直接。还可以使用有限状态机手动设计的词法分析器,它也很简单,但在概念上非常丰富。
在定义语言的语法时,您必须确保它的一致性和明确性。如果您熟悉Prolog,则可以在实现之前使用Definite Clause Grammars(DCG)来使用您的语言。我发现它非常有用。
然后你可以使用工具来生成lexer和解析器(比如Bison,ANTLR,Lemon,Yacc等)。
另一个建议是保持简单。您可以实现要构建的语言的子集并对其进行润色,直到您对它感到满意为止,然后扩展它以实现新功能等等。您将发现自己在增长您的语言和编译器,并了解它如何变得更大更完整,随着它越来越好,您会感到更自信和满意。毕竟,这是一个美好而美好的挑战。
玩得开心。学习编译器设计只是一个有趣而且非常有趣的主题!
PS。阅读dragon book
答案 1 :(得分:0)
除非你严重错误地设计你的语言,否则编译速度几乎不会成为问题。您应该专注于您需要的语法和语义。