ocamlyacc解析错误:什么令牌?
我正在使用ocamlyacc和ocamllex。我的语法中出现错误,表示自定义异常。到目前为止,我可以让它报告错误位置:
| error { raise (Parse_failure (string_of_position (symbol_start_pos ()))) }
但是,我也想知道读了哪个令牌。一定有办法---有人知道吗?
谢谢。
没有找到相关结果
已邀请:
3 个回复
怪酞撩匹
是你需要的。其他部分不是必需的,但有用。
将所有剩余的令牌连接成字符串,以便用户轻松找到错误位置。应在词法分析器中更新
以包含正确的位置。 (资源)
抢垢洛韧
解析器的最佳方法是将
参数设置为包含字符
- 这将使解析器打印出所经历的所有状态,并且每次移位/减少它都会执行。 如果您使用的是bash,则可以使用以下命令执行此操作:
筷啸够对铅
等输出$ 1。 编辑:回复评论。 为什么使用错误终端?我正在阅读一个ocamlyacc教程,该教程说当发生解析错误时会调用一个特殊的错误处理例程。像这样: 3.1.5。错误报告例程 当解析器功能检测到 语法错误,它调用一个函数 用字符串命名
“语法错误”作为参数。该 默认
功能 什么也没有回报,从而开始 错误恢复(请参阅错误恢复)。 用户可以定义自定义 标头中的parse_error函数 语法文件的部分如:
好吧,看起来你只能通过该功能获得“语法错误”。敬请期待更多的信息。