我需要解析一个简单的DSL,如下所示:
funcA Type1 a (funcB Type1 b) ReturnType c由于我没有语法分析工具的经验,我认为自己编写一个基本的解析器(用Java)会更快。
即使对于一个简单的DSL来说,使用像ANTLR这样的东西并构造一个适当的语法定义会不会更好?
发布于 2010-03-17 01:22:54
简单的答案:当编写描述语法的规则比编写接受语法描述的语言的代码更容易的时候。
如果你唯一需要解析的东西看起来和你上面写的一模一样,那么我会说你可以手写它。
更广泛地说,我会说大多数regular language可以更快地手工解析(使用正则表达式)。
如果您正在解析具有大量规则和结果的context-free language,则ANTLR (或其他解析器生成器)可以使工作变得更容易。
此外,如果您有一种简单的语言,并且希望将来变得更加复杂,那么将规则描述添加到ANTLR语法中将比将它们构建到手工编码的解析器中要容易得多。
https://stackoverflow.com/questions/2456494
复制相似问题