lex 和 yacc 的用途是什么?

lex 和 yacc 的用途是什么?

我目前正在尝试使用 C 语言开发自己的编译器。我偶然发现了一个帖子,说学习 lex 和 yacc 将有助于构建编译器。但是,我不明白它的用途以及为什么需要它才能构建自己的编译器。我很抱歉我对创建编译器缺乏了解,但我认为使用 C 并学习编译器概念和理论已经足以构建它了。

答案1

信息很容易找到。

例如,从 Lex 和 Yacc 页面

编程语言的编译器或解释器通常分解为两部分:

  1. 阅读源程序并了解其结构。
  2. 处理该结构,例如生成目标程序。

Lex 和 Yacc 可以生成解决第一个任务的程序片段。

重新发现源结构的任务分解为子任务:

  1. 将源文件拆分成标记 (Lex)。
  2. 查找程序的层次结构(Yacc)。

阅读此页面并研究示例。

使用 C 并学习编译器概念和理论也没有错。Lex 和 Yacc 只能补充这些知识。

相关内容