执行Lex和Yacc的顺序顺序?

时间:2012-10-14 17:04:56

标签: c ubuntu

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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