Compiler construction 如何在没有编译器编写工具的情况下开发编译器

Compiler construction 如何在没有编译器编写工具的情况下开发编译器,compiler-construction,Compiler Construction,我的老师提出了这个问题(如何在没有编译器编写工具的情况下开发编译器)。我找了一下,但什么也没找到。所以,如果有人对此有任何想法,请帮助我。我找到了很多关于使用编写工具开发编译器的信息,但当我搜索没有编译器编写工具的情况时,什么也没有找到 提前感谢您。请注意: 手写扫描仪(大的开关语句),以及 递归下降分析器 编译器基本上是一个过滤器/转换器。它读取文本文件并输出恰好与给定CPU理解的指令相同的数据 因此,您需要了解: 源语言的命令等效于什么汇编代码 这些汇编程序命令的每个字节序列等效于什么

我的老师提出了这个问题(如何在没有编译器编写工具的情况下开发编译器)。我找了一下,但什么也没找到。所以,如果有人对此有任何想法,请帮助我。我找到了很多关于使用编写工具开发编译器的信息,但当我搜索没有编译器编写工具的情况时,什么也没有找到

提前感谢您。

请注意:

  • 手写扫描仪(大的
    开关
    语句),以及
  • 递归下降分析器

  • 编译器基本上是一个过滤器/转换器。它读取文本文件并输出恰好与给定CPU理解的指令相同的数据

    因此,您需要了解:

    • 源语言的命令等效于什么汇编代码
    • 这些汇编程序命令的每个字节序列等效于什么

    然后您可以读取源文件并输出编译后的代码。

    这是离题的,但我想说的是“龙之书”,但您始终可以使用机器codes@close-选民这怎么会“太宽”?请解释一下。非常简单的问题和非常简单的众所周知的答案。@KenY-N你链接到的帖子很可笑。这本书是一本标准教材。还有其他的,但是,正如一位受访者所说,创建一个元帖子来审查这个帖子是完全奇怪的。天哪,还有两张无法解释的接近票。如果你对编译器一无所知,请不要插手,如果你知道并且仍然想结束投票,请提供你的理由。如果投票反对的人能够解释原因,我将不胜感激。当然。1.编译器基本上由NFA或DFA加上DPDA加上语义检查和操作加上代码生成和优化组成。2.这件事没有“碰巧”。这就是编译器的用途。3.这篇华而不实的文章中没有任何东西能以任何方式回答这个问题,也没有任何东西能透露出对这个主题最不了解的地方。这是一个有趣的假设,因为到目前为止我已经编写了几种编程语言和编译器。考虑一下,我可能试图减少一个初学者可能理解和熟悉的概念的答案。这不是一个假设,而是一个事实。无论你对这个过程的理解如何,它都没有反映在这个答案中,这个答案并没有以任何方式回答被问到的问题。他在问如何在没有扫描仪和解析器生成器的情况下编写编译器。这两种方法的优点和缺点是什么?@Gheznal Nofly使用lex/yacc等工具的优点是,它简化了词法分析和解析阶段的编写,并且您可以很快跟上速度。缺点是很难从生成的解析器获得合理的错误报告。在解析器生成器使用的形式化模型中表达源语言的语法也可能存在问题。一个非常简单的观点是,在homebrewn工具中,解析器生成器最好用于简单的领域特定语言,而完整编程语言的编译器通常有手工编写的解析器。@Ghezian现在你太宽泛了。除了不需要生成器工具之外,没有什么特别的优点,缺点是您必须编写大量代码,而不是让生成器为您编写代码,并且保证正确性。