提高 Antlr 的编译性能
总结一些提高 antlr 词法和语法分析性能的方法。
缓存
如果你构建的是编译器,通常要预处理、预编译、编译文件,使得同一个文件的语法信息(也就是解析树或者 AST)需要用三次。
对于同样的源文件,antlr 生成的解析树(parse trees)是一样的。因此可以复用第一次的语法信息,省去两次的开销。
Hi 👋,欢迎访问我的博客
我是一名前端开发者,VS Code 插件和语言服务器开发者
我目前在开发基于 LSP 的 语言服务器,也在维护用 Go 构建的编译器
在这里查看更多关于我的更多信息
我希望通过这个博客记录技术知识,提升影响力。如果你感兴趣,可以看看这些文章:
我为 VS Code 贡献了代码:这篇文章登上了阮一峰的科技爱好者周刊
LSP 与 VS Code 插件开发 第一章:记录我对 LSP 和语言服务器开发系列文章
怎么让 favicon 动起来:发现了吗,本网站的 favicon 会动
总结一些提高 antlr 词法和语法分析性能的方法。
如果你构建的是编译器,通常要预处理、预编译、编译文件,使得同一个文件的语法信息(也就是解析树或者 AST)需要用三次。
对于同样的源文件,antlr 生成的解析树(parse trees)是一样的。因此可以复用第一次的语法信息,省去两次的开销。
周末参加了 RubyConf China 2023,很奇妙的一段体验!作为一个前端,在同样是脚本语言的 Ruby 会议上听到了 React18,WebAssembly,Rust,Rails,LSP 这些概念,也会有些内容对比到 ts 或者 js,会有“原来 Ruby 程序员是这样思考的”的想法。虽然 Ruby 代码看不懂,拓宽视野还是让我耳目一新。
博客一直缺一个 favicon
,在标签栏里和其他网页放在一起,就显得很丑,一看就是半成品网页。
想放一个标新立异些的 icon,问了 ChatGPT 也没有什么好的建议,就想放一张动图。
可是现代浏览器里 favicon
如果是 gif
格式,通常只会展示它的第一帧,并不能动起来。