如何将匹配字符串的yyleng从Lex发送到Yacc?

时间:2010-12-23 13:19:44

标签: yacc bison lex

请问我正在尝试将匹配字符串的yyleng从我的(.l)文件传递到(.y)文件。以下是该问题的示例:

在Lex档案中

<state1>.+    {   fprintf(yyout, "%d", yyleng);    } 

在Yacc文件中:

/ *我需要知道用于接收yacc文件的特定yyleng的方法。我要使用全局变量吗?或者有一个特定的方法来处理这个问题? * /

提前感谢您的帮助! 〜任何建议都非常感谢。

2 个答案:

答案 0 :(得分:3)

yyleng是一个全局变量;在你的语法文件中声明并使用它。

Flex使用:

typedef size_t yy_size_t;
extern yy_size_t yyleng;

Lex使用:

extern int yyleng;

答案 1 :(得分:1)

定义您自己的 yytype 并在其上传递任何值