1

我听我的老师说应该首先执行 Yacc 文件,因为它会创建 yy.tab.h 将在 Lex 文件中使用,反之亦然。我真的很困惑。我想知道执行这两个文件的正确顺序是什么?

4

2 回答 2

1

Yacc 是解析器生成器,您首先需要它。然后必须执行 flex(词法分析器生成器)来生成依赖于生成的解析器的词法分析器。所以

  1. 雅克
  2. 柔性

这里有一个例子:http ://www.usna.edu/Users/cs/lmcdowel/courses/si413/F10/labs/L04/calc1/ex1.html

于 2012-10-14T17:48:29.430 回答
0

Lex 是一个词法分析器,可以将标识符或保留字或特殊字符等字符串转换为标记,而 yacc 是一个可以处理标记序列的解析器(如 IDENTIFIER EQUAL IDENTIFIER SEMICOLON)。我不确定如何在编译时执行它们的顺序,我想这没有什么区别(你可以尝试一下;),但是两者都必须在编译器运行之前运行。

显然,在运行时,lex 生成的代码在 yacc 生成的代码之前运行。

于 2012-10-14T17:49:37.660 回答