YACC / LEX从C文件中调用解析器

时间:2015-08-16 13:22:33

标签: c yacc flex-lexer

对于一个项目,我使用yacc和lex / flex来解析文件,我想从其他地方调用解析器,而不是从.y.l文件调用。< / p>

我可以调用yyparse()函数,但如果我这样做,则会从stdin读取,因此我更改yyin以使其引用我的文件。但我无法在.l文件中的其他地方访问它。

在弹性页面页面中,我看到选项--header-file=lex.h似乎与yacc的-d类似,但是当我使用它时出现错误:

lex: can not open --header-file=lex.h
/usr/bin/m4:stdin:2837: ERROR: end of file in string

那么如何在我的程序中访问yyin,或者是否有更简单的解决方案来调用解析器?

编辑:

我尝试将extern FILE * yyin;放在.l文件的顶部,但它不起作用。

编辑2:
当我将它添加到C文件中时,它可以工作。

编辑3:
我的flex版本是2.5.39,我使用的命令行是:
lex carnet.l --header-file=lex.h

0 个答案:

没有答案