使用ANTLR时的坏建议

邀请您注意一系列有害的技巧,这些技巧将帮助您创建效率最高的解析器。不要忘记按照说明做所有事情,否则会出问题!

1. ATN-不是错误,而是功能


Terrence Par在优化语法中的分支预测方面具有出色的功能。完全出于解析器性能的考虑,该字段是静态的,并且将永远累积信息!当然,您不会注意到小文件之间的差异很大,主要是即使您没有足够的内存供其他人使用,也不在测试中解析2-3 MB的文件!

2.对于那些不习惯回头看爆炸的人,要向前看!


如果您的语法检查了每个规则中流中的所有标记,那么您可以保证处理的准确性!如果没有足够的堆栈,则足以将其大小增加十倍,主要是制定更多规则!

3. LL弱者的SLL


如果ANTLR4可以为您做优化,那为什么还要优化呢?ALL模式下的语法为您节省了阅读此类文章的宝贵时间。记住要为每个替代方案添加相同的标记,尤其是在看起来很漂亮的情况下。

4. AST-您拥有的所有信息


不要忘记听Terrence并将访问者,听众支持添加到解析器中。将代码嵌入语法不仅是不必要的困难,而且是重构的潜在问题!绕过树上的每个节点,您不仅可以试试运气,还可以检查客户的神经!

5.更多规则,规则之神!


但是您知道吗,借助ANTLR4可以建造Babel塔?在代码段中找不到大的嵌套?函数内部包含大量表达式的函数?只是不要向客户展示缩小的js文件的工作,无论如何,没人能理解它们,甚至浏览器也是如此。

6.仅需要词法分析器来创建令牌。


在任何情况下都不要尝试使用词法分析器中的令牌,将{}块包装在令牌中将无法让您欣赏需要更多内存的客户机器!

内存必须畅通!愿memleak与您同在!

Source: https://habr.com/ru/post/undefined/


All Articles