何时使用解析器生成器是否可行?

laz*_*tor 5 c parsing antlr lex flex-lexer

我正在为我正在编写的Web应用程序编写一个简单的文本模板语言(想想google的ctemplate).完成后,它将只包含少量可能的操作,简单的事情,如"评估和执行","评估和打印","评估和逃避HTML","评论".我正在考虑从头开始编写整个解析器,但我开始查看解析器生成器,如lex,flex和antlr.对于我的简单语法,这些似乎比我需要的更多.所以问题是,在什么时候使用解析器生成器是切实可行的?

msw*_*msw 6

宜早不宜迟.如果你现在有一个简单的语法,使用解析器生成器很容易.当您想要添加变量和循环以及条件时,它会更容易.

可是等等!- 没有什么理由发明自己的语言,除非它是非常特定领域的eqn,TeX或者是分子建模语言.嵌入专门为此目的设计的语言会好得多.Tcl是该领域的老牌卫士, Python是一个强有力的竞争者.Perl也被设计成嵌入式脚本语言,但我认为它是一个糟糕的候选者,因为它可能会在用户手中产生非常"只写"的代码.

语言设计很难,而吸烟所有繁琐的事情仍然比较困难.使用Python和Tcl,您可以决定向用户公开多少核心语言,并在您需要时打开关闭位.

我编写的第一个小语言(令人惊讶地仍在生产中使用)如果Tcl在那里使用的话会好得多.