2011-06-02 92 views
50

我想学习如何编写词法分析器。我的大学课程有一个任务,我们必须写一个解析器(和一个词法分析器),但这是给我们的,没有任何指令或反馈(超出标记),所以我没有真正从中学到很多东西。我在哪里可以学习编写词法分析器的基础知识?

寻找这个主题后,我只能找到相当先进的写作,重点放在我觉得领先于我所在的几个领域的领域。我想讨论一下为一个非常简单的语言编写词法分析器的基础知识,我可以用它作为研究令人费解的更复杂的语言的基础。

在这个阶段,我并不是真正对最佳实践或优化技术感兴趣,而是倾向于关注基本要素。有什么好的资源让我开始?

回答

42

基本上有两种主要的方法来写一个词法分析器:

  1. 创建手写一个在这种情况下,我建议this small tutorial
  2. 使用一些词法生成器工具,如lex。在这种情况下,我建议阅读教程选择特定的工具。

另外我想从LLVM文档推荐Kaleidoscope tutorial。它贯穿于一种简单的语言的实现,特别是演示如何编写一个小的词法分析器。本教程有一个C++和Objective Caml版本。

关于这个问题的经典教科书是Compilers: Principles, Techniques, and Tools也被称为龙书。然而,这可能属于“相当先进的写作”范畴。

+2

万花筒教程是真正为我解答这个问题的部分。 – 2015-07-12 19:50:34

相关问题