【问题标题】:How Can I Get a Flex Scanner To Return Bison's Error Token?如何让 Flex 扫描仪返回 Bison 的错误令牌?
【发布时间】:2010-02-16 16:31:27
【问题描述】:

Bison 使用一种特殊的错误标记(称为“错误”),可以在 Bison 解析器中使用它来从错误中恢复。有没有办法从 Flex 生成的扫描仪返回这个特定的令牌?

【问题讨论】:

    标签: bison flex-lexer


    【解决方案1】:

    “错误”标记并不是真正的标记。它仅用于错误处理。

    http://dinosaur.compilertools.net/yacc/index.html 上,您可以阅读:令牌名称错误是为错误处理保留的,不应天真地使用。

    在我自己的解析器中,我使用这样的错误标记(解析类似 C 的宏语言:

    StatementList  :
                   |  StatementList Statement ';'
                   |  error ';'
    

    如果用户出错,yacc/bison 将继续执行,直到下一个分号(语句结束),然后继续执行下一个语句。

    【讨论】:

    • 谢谢。我意识到我真正想要的是拒绝。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    相关资源
    最近更新 更多