Dan*_*ich 6 error-handling dsl antlr
我正在为非程序员开发特定于域的语言(DSL).非程序员犯了很多语法错误:他们拼错了关键字,他们没有关闭括号,他们没有终止块,等等.
我正在使用ANTLR生成我的解析器; 它为处理RecognitionExceptions提供了一个很好的机制来改进错误处理.但我发现很难为我的DSL开发好的错误处理代码.
在这一点上,我正在考虑简化语言的方法,以便我更容易为用户提供高质量的错误消息,但我不确定如何解决这个问题.我想我想以某种方式减少错误的模糊性,但我不确定如何在语法中实现这个想法.
我可以通过哪些方式简化语言以改善用户的解析错误消息?
编辑:更新以澄清我对如何简化我的语言感兴趣,而不仅仅是ANTLR错误处理技巧.(虽然,谢谢你!)
我最近读了一篇文章,介绍了一个人为他的解析器实现了一个简单的学习机制。基本上,这个想法是标记 ANTLR 为您提供的解析错误以及错误的实际原因。例如,
错误:NilClass 没有方法“bar”:foo
可以标记为:
错误:尝试在 foo 上调用“bar”,但 foo 没有值。
这个想法实际上来自 2003 年的一篇论文:Generate LR Syntax Error Messages from Examples。Research!rsc博客也对此进行了讨论。
| 归档时间: |
|
| 查看次数: |
1348 次 |
| 最近记录: |