我该如何编写语法检查程序?

时间:2011-10-23 18:33:32

标签: ruby parsing compilation

我有兴趣为语言编写语法检查程序。基本上我想做的是创建一个cli工具,它将获取一个输入文件,然后编写它找到的错误。我想要解析的语言与图灵基本相似,而且相当丑陋,有时候也很痛苦。必须使用唯一的其他语法检查器

我应该使用哪种语言?我想我会用Ruby编写它,但Python可能更快或者有更好的解析库。

我应该在Ruby或Pearl中使用哪些库?哪个更容易。

是否有用于定义语法的入门读物?这样的任务可能会变得混乱,我不确定如何处理它。

1 个答案:

答案 0 :(得分:1)

如果是我,我会用Ruby写它,后来担心速度。如果该程序是一个失控的命中,我可能会添加一个本机gem来加速最慢的位,但大部分都留在Ruby中。如果它成为世界上最重要的程序,或者我没有别的事可做,我可能会在那时用C或C ++重写它,但不是之前。

我会做所有parsing using Treetop.

我可能会补充说,直接在C中编写和优化语言解析器是一种有趣的学习体验。你得到大致没有字符串处理帮助,所以你最终做了所有的解析,但你有机会只做最少量的处理。这与Ruby体验相反。为了获得最大速度,你最终会做一些事情,比如为malloc编写前端,你知道你永远不需要释放的多个对象在malloced块中永久分配。虽然通常使用带有C / C ++的yacc(1),但你当然可以编写递归下降解析器并获得更深入的学习体验。

当然,已经完成了所有这些,我很高兴现在坚持使用Ruby。