我想学习如何写词法分析器。我的大学课程有一个任务,我们必须编写一个解析器(和一个词法分析器一起使用),但这是给我们的,没有任何指示或反馈(超出标记),所以我没有真正从中学到很多东西。
在搜索这个主题之后,我只能找到相当高级的写作,这些写作集中在我认为比我所处的位置提前几步的领域。我想讨论为一种非常简单的语言编写词法分析器的基础知识,我可以将其作为研究更复杂语言标记的基础。
在这个阶段,我对最佳实践或优化技术并不感兴趣,而是更喜欢专注于基本要素。让我入门的有哪些好资源?
答案 0 :(得分:56)
写作词法分析器基本上有两种主要方法:
另外,我想推荐Kaleidoscope tutorial文档中的LLVM。它贯穿于一种简单语言的实现,特别演示了如何编写一个小词法。本教程有一个C ++和Objective Caml版本。
关于这个主题的经典教科书是Compilers: Principles, Techniques, and Tools,也被称为龙书。然而,这可能属于“相当高级的写作”类别。
答案 1 :(得分:9)
Dragon Book可能是关于这个主题的权威指南,尽管它可能有点压倒性。 Language Implementation Patterns和Programming Language Pragmatics也是很好的资源。