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

Rup*_*ott 69 language-agnostic compiler-construction lexer

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

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

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

vit*_*aut 62

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

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

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

关于这一主题的经典教科书是编译器:原理,技术和工具,也被称为龙书.然而,这可能属于"相当高级的写作"类别.

  • Kaleidoscope教程是我真正回答这个问题的部分. (3认同)

Bra*_*etz 9

龙书大概是关于这一问题的明确指导,虽然它可以是一个有点势不可挡.语言实现模式编程语言语用学也是很好的资源.

  • 龙书上+1.在大学时从中学到很多东西.是的,那里有很多,但如果你真的对编译器设计和实现感兴趣,它是一个很好的资源. (4认同)