在哪里可以学习编写词法分析器的基础知识?

时间:2011-06-02 15:11:09

标签: language-agnostic lexer compiler-construction

我想学习如何写词法分析器。我的大学课程有一个任务,我们必须编写一个解析器(和一个词法分析器一起使用),但这是给我们的,没有任何指示或反馈(超出标记),所以我没有真正从中学到很多东西。

在搜索这个主题之后,我只能找到相当高级的写作,这些写作集中在我认为比我所处的位置提前几步的领域。我想讨论为一种非常简单的语言编写词法分析器的基础知识,我可以将其作为研究更复杂语言标记的基础。

在这个阶段,我对最佳实践或优化技术并不感兴趣,而是更喜欢专注于基本要素。让我入门的有哪些好资源?

2 个答案:

答案 0 :(得分:56)

写作词法分析器基本上有两种主要方法:

  1. 创建一个手写的,我推荐this small tutorial
  2. 使用某些词法生成器工具,例如lex。在这种情况下,我建议您阅读特定工具的教程。
  3. 另外,我想推荐Kaleidoscope tutorial文档中的LLVM。它贯穿于一种简单语言的实现,特别演示了如何编写一个小词法。本教程有一个C ++和Objective Caml版本。

    关于这个主题的经典教科书是Compilers: Principles, Techniques, and Tools,也被称为龙书。然而,这可能属于“相当高级的写作”类别。

答案 1 :(得分:9)

Dragon Book可能是关于这个主题的权威指南,尽管它可能有点压倒性。 Language Implementation PatternsProgramming Language Pragmatics也是很好的资源。