首页 > 解决方案 > 如何显示来自解析器的位置信息?

问题描述

Stream.Error当解析器内部发生 a 时,如何显示位置信息?例如:

let p = parser
  | [< '1; '2 ?? "1 expected at line L, column C" >] -> ()

如何获取流中的位置?有没有办法Stream.count不用手动计算换行符?

标签: ocamlcamlp4

解决方案


您必须手动建立职位(Lexing.position例如表示)。不过,我不会触及词法分析器/解析器本身,而是编写一个简单的函数,将文件偏移量(用 表示Stream.count)转换为(行、列)坐标系。


推荐阅读