对于一个项目,我使用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