ocaml - 如何显示来自解析器的位置信息?
问题描述
Stream.Error
当解析器内部发生 a 时,如何显示位置信息?例如:
let p = parser
| [< '1; '2 ?? "1 expected at line L, column C" >] -> ()
如何获取流中的位置?有没有办法Stream.count
不用手动计算换行符?
解决方案
您必须手动建立职位(Lexing.position
例如表示)。不过,我不会触及词法分析器/解析器本身,而是编写一个简单的函数,将文件偏移量(用 表示Stream.count
)转换为(行、列)坐标系。
推荐阅读
- rust - rust iterator::any 只接受 FnMut 签名的函数?
- sql - Postgres CUBE 搜索 - 可选/任何值
- node.js - 在 overmind graphql 中导入 Phoenix npm 包失败
- python - 使用旋转矩阵和相机矩阵的像素投影,有人可以回顾一下我做错了什么吗?
- angular - 如何从角度的另一个组件中的函数重建另一个组件?
- telegram - 在 Telegram 中使用 Telethon 提升用户
- java - 为什么Java代码编译有区别:mvn verify vs mvn compile
- javascript - 有新数据集时的Cytoscape js重绘图表
- python - 如何从表格中提取行并创建只有表格行的黑白表格
- c# - HasMany 配置 MaxExpansionDepth 问题