自 1999 年以来,我一直在为工作和娱乐而编程。我想学习新东西,最近我一直专注于解析,因为我的大部分工作是阅读、整合和分析数据。我还有大量重复性任务,我认为如果开销足够低,我可以用非常简单的特定领域语言表达这些任务。我有几个关于这个主题的问题。
- 我当前的大部分解析代码都没有定义正式的语法。我通常用我选择的语言把一些东西拼凑在一起,因为这很容易,我知道怎么做,而且我可以很快地编写代码。与我一起工作的其他人也很容易维护。与大多数程序员用来编写解析器的技巧相比,定义语法和生成真正的解析器(就像使用ANTLR或YACC一样)来解析事物的优点和缺点是什么?
- 在 C++、Perl 和 Ruby 中编写基于语法的解析器的最佳解析器生成工具是什么?我查看了ANTLR并没有发现很多关于将 ANTLRv3 与 C++ 目标一起使用的信息,但除此之外这看起来很有趣。我应该阅读哪些与 ANTLR 类似的其他工具?
- 有兴趣了解更多关于解析的规范书籍和文章是什么?不幸的是,编译器课程不是我教育的一部分,因此非常欢迎基础材料。我听说过关于龙之书的好消息,但那里还有什么?