小编lti*_*mer的帖子

简单的递归下降解析器?

我正在编写一个用于编译成JS的模板语言的解析器(如果相关的话).我从一些简单的正则表达式开始,这似乎有效,但正则表达式非常脆弱,所以我决定编写一个解析器.我开始编写一个简单的解析器,通过推送/弹出堆栈来记住状态,但事情不断升级,直到我手上有一个递归下降解析器.

不久之后,我比较了以前所有解析方法的性能.递归下降解析器是迄今为止最慢的.我被困了:是否值得使用递归下降解析器来处理简单的事情,或者我是否有理由采取快捷方式?我很想去纯粹的正则表达式路线,这种路线非常快(几乎比RD解析器快3倍),但在某种程度上非常黑客且无法维护.我认为性能并不是非常重要,因为编译模板是缓存的,但是递归下降解析器是每个任务的正确工具吗?我想我的问题可以被视为更具哲学性的问题:在多大程度上牺牲性能的可维护性/灵活性是值得的?

javascript parsing templates tokenize lexer

6
推荐指数
2
解决办法
2141
查看次数

标签 统计

javascript ×1

lexer ×1

parsing ×1

templates ×1

tokenize ×1