6月20日
一冲动花了三天(周二到周四)时间复现了一个对C语言的**玩具**符号执行工具。
例子在最后,对于排序算法,符号执行算法会检查所有可能的执行路径,看看是否存在违背断言的取值,如果没有则程序正确。
语法解析用的对LL(1)的递归下降,路径求解用的 Z3.
当然,相比于直接证明正确性,这是一种很低效的方法。
一冲动花了三天(周二到周四)时间复现了一个对C语言的**玩具**符号执行工具。
例子在最后,对于排序算法,符号执行算法会检查所有可能的执行路径,看看是否存在违背断言的取值,如果没有则程序正确。
语法解析用的对LL(1)的递归下降,路径求解用的 Z3.
当然,相比于直接证明正确性,这是一种很低效的方法。
#划水划水#
编译原理--零碎知识点
语言是句子的集合
句子是仅由终结符组成的句型
词法分析基于正则文法(3型文法)
语法分析基于上下无关文法(2型文法)
自底向上语法分析的关键是寻找句柄
递归下降分析法不允许任何一个非终结符是直接左递归的
最左规约是规范归约
最右推导是规范推导
产生式是用于定义语法范畴的一种书写规则
后缀式表示法(逆波兰表示法,用栈实现)
四元式之间的联系是通过临时变量实现的
后缀式ab+cd+/可用表达式(a+b)/(c+d)表示
逆波兰式ab+c+d*e-的表达式为(a+b+c)*d-e
编译原理--零碎知识点
语言是句子的集合
句子是仅由终结符组成的句型
词法分析基于正则文法(3型文法)
语法分析基于上下无关文法(2型文法)
自底向上语法分析的关键是寻找句柄
递归下降分析法不允许任何一个非终结符是直接左递归的
最左规约是规范归约
最右推导是规范推导
产生式是用于定义语法范畴的一种书写规则
后缀式表示法(逆波兰表示法,用栈实现)
四元式之间的联系是通过临时变量实现的
后缀式ab+cd+/可用表达式(a+b)/(c+d)表示
逆波兰式ab+c+d*e-的表达式为(a+b+c)*d-e
《计算的本质》,2019 第 3 本书,感觉被低估的一本书,只反反复复看了前 100 页,已经收获满满,甚至有人评价这本书是 Ruby 版的《SICP》。
学会前 100 页,你就应该能手写各种确定和非确定性有限自动机,正则表达式引擎,确定和非确定性递归下降自动机,用三种方式描述一门语言的 AST,以及开发一门自己的脚本语言,信息量极大,推荐没时间看《龙书》的同学可以试试这本。
学会前 100 页,你就应该能手写各种确定和非确定性有限自动机,正则表达式引擎,确定和非确定性递归下降自动机,用三种方式描述一门语言的 AST,以及开发一门自己的脚本语言,信息量极大,推荐没时间看《龙书》的同学可以试试这本。
✋热门推荐