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

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

在寻找这个主题后,我只能find相当先进的写作,重点放在我觉得比我所在的领先几步的地方。 我想讨论一下为一个非常简单的语言编写一个词法分析器的基础知识,我可以用它来作为调查更加复杂的语言的基础。

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

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

  1. 创build一个手写的,在这种情况下,我build议这个小教程 。
  2. 使用一些lexer生成器工具,如lex 。 在这种情况下,我build议阅读教程select特定的工具。

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

关于这个主题的经典教科书是编译器:原理,技术和工具,也被称为龙书。 不过这可能属于“相当先进的写作”范畴。

龙书也许是关于这个主题的权威指南,虽然它可能有点压倒性。 语言实现模式和编程语言语用学也是很好的资源。