【问题标题】:Clear buffers before calling YYACCEPT in yacc/lex在 yacc/lex 中调用 YYACCEPT 之前清除缓冲区
【发布时间】:2012-06-15 12:25:43
【问题描述】:

yacc 中调用YYACCEPT 之前有什么方法可以清除解析器缓冲区。

如果我不清除缓冲区,当我第二次调用yyparse 时会导致一些问题。

还要注意我使用了一些全局变量,所以不能使用可重入解析器。

提前致谢!!

【问题讨论】:

    标签: c parsing yacc lex lexer


    【解决方案1】:

    确实有。请参阅弹性手册的this section。具体来说,在调用yyparse之前调用YY_FLUSH_BUFFER

    【讨论】:

    • 你能告诉我如何准确地使用这个功能YY_FLUSH_BUFFER??
    • @nav_jan 在你的代码某处,你有一行 yyparse(); 所以就在这行之前放 YY_FLUSH_BUFFER(); 你应该很好。
    • 我需要为这个函数包含任何特殊的标题吗?
    • @nav_jan 抱歉,您需要在序言部分使用extern YY_FLUSH_BUFFER;。而且,检查我的一个项目,它最后显然没有使用()。所以电话只是YY_FLUSH_BUFFER;
    • 在序言部分添加extern YY_FLUSH_BUFFER;会在编译时出错你确定这是它的使用方式吗?
    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多