构建IDE /编译器所需的概念

时间:2009-01-21 16:04:50

标签: parsing compiler-construction ide

在制作IDE(例如SharpDevelop)或编译器/语言解析器时,我需要知道哪些计算机科学主题?我不希望有完整的深度教程列表,只是一个主题列表,这些主题对我有所帮助。

我是否正确地认为解析器有一些关于语言的语法/语义的规则,并根据这些规则验证代码?这似乎是一种简单的方法?

由于

6 个答案:

答案 0 :(得分:8)

IDE,编译器和调试器是三种不同的野兽。

在考虑为模拟语言构建建模工具时,我会发现一些有趣或鼓舞人心的链接的快速且略有随机的选择,这与我进入IDE的过程非常接近:

在这些链接中,有些偏向于帮助阅读和浏览而不是编写代码的模式,以及用户在使用它们而不是作为单独的循环时扩展的系统。如果您需要面向任务的界面或静态插件,可以查看现有IDE(如Eclipse)的项目。

答案 1 :(得分:5)

要实现编译器/语言,您需要基本了解:

  • BNF& EBNF - 无上下文语法(语法规则)
  • 词法分析技巧&工具(Lex / Bison)
  • 解析技术(例如,递归体面,LL,LR)

答案 2 :(得分:4)

编写编译器和口译员:软件工程方法[平装] 麦当劳 - >这是一本很好的入门书。它将引导您完成构建编译器和使用调试器以及您需要的许多其他内容的ide的整个过程。在本书的最后,您将很好地了解如何自行拓展。

您可能还希望通过PragProg.com发布来查看语言实现模式。

答案 3 :(得分:1)

如果您正在编写编译器,那么语言翻译理论中的一门优秀的计算机科学课程或类似的东西就非常重要。麻省理工学院开放课件提供"Computer Language Engineering"课程。这应该教会你mmattax提到并提供良好开端的概念。

至于IDE,这更像是一个桌面应用程序项目。您可能正在从IDE调用编译器,但实际上并没有编译代码(但是,公平地说,在复杂的IDE中,您可能正在解析代码)。因此,构建调用外部编译器/链接器的IDE所需的知识将更多地围绕您正在使用的任何平台的UI工具包,可能还有一些编译器前端理论(正如您在编译器课程中学到的那样) )如果你想解析代码。

答案 4 :(得分:0)

为了开发编译器,您需要掌握以下主题

  • 有限自动化(DFA)
  • 无上下文语法(你需要在开始编码之前定义一个语法,它是你的语言/编译器的蓝图)

完成理论部分后,您需要为编译器开发以下组件

  1. 词法分析器(为您的语言验证令牌)
  2. Parser(验证你的语言)
  3. 翻译方案(将您的代码(高级别)转换为3个地址代码(机器语言代码))
  4. 虚拟机(代码生成/生成代码的实际输出)
  5. 注意:每个组件的输出输入到下一个组件,Lexical Analyzer的输入是您的实际代码 主要是使用形式化方法(程序设计模式)开发编译器

答案 5 :(得分:-2)

很抱歉,答案是“整个计算机科学和多年的实践经验”。

对于普通凡人和eclipse,intellij,netbeans和Visual来说,它的主题太大了......主题很好。

看一些更小,更容易实现的东西,就像eclipse插件一样,感兴趣的东西。