语法分析简单总结
语法分析是词法分析的后一步,主要的目的就是通过词法分析器生成的 tokens 来生成抽象语法树(Abstract Syntax Tree,AST)。主要通过上下文无关文法(Context Free Grammar,CFG)来描述语言的语法,使用相应的算法更具 CFG 来解析 tokens 形成 AST。语法分析应该是编译原理中非常偏向数学的一个方面,并且已经有了很成熟的解决方案,这句话的意思就是语法分析和我学习的方向和目的关系不大。不过这个东西感觉还挺有意思,同时虽然关系不大,但是了解一下还是有必要的,这里简单总结一下,对于算法方面不准备详细写,之后有时间再补上吧(之后学校的编译原理课应该会在 LL,LR 这种地方花很多时间,到时候再来弄也无妨,现在就不浪费生命了)。在慕中语法分析占据了比较大的篇幅,我不觉得自己都听懂了,也有很多不记得了,所以下面写的东西里面可能有很多谬误,仅供参考了哈哈哈。
…
年轻人的第一个词法分析器——COOL 的 lexer
花了一天多的时间实现了这个词法分析器,从骨架上开始写确实可以少关心很多繁杂的小问题,体验好了许多。
词法分析是编译的第一步,做的事情就是对源代码按照语法规则进行分词,并为其指定对应的类型,形成一系列 <类型,词素> 这样的二元组(token,词法单元)。
…
InCTF2021-Ancienthouse/NodeKeeper-WP
Ancienthouse
这道题用了 2.2.5 版本 jemalloc 作为分配器,而不是传统的 ptmalloc。jemalloc 是 Facebook 开发的一个分配器,在 Firefox 和 redis 中都有应用。据说比 ptmalloc 有更好的性能,特别是在多线程下的表现非常优秀。我也是第一次听说这个东西,为了解题简单地了解了一下。在 csdn 上看到一个很棒的系列,如果有兴趣跟着这些文章结合源码就可以理解的比较清楚了。我这里不再细讲,只说和题目相关的。
…