如何在大脑中模拟代码运行
昨天,终于在笔记本上安装好了ubuntu,这次没有使用虚拟机。这样,可以在ubuntu中使用图形界面相关功能了。在win10下通过wsl使用ubuntu,不能使用图形界面,感觉功能很受限。
心里一想起这事,就觉得很兴奋。
但睡在床上,不想起床,于是就把自己读过的代码在大脑中进行回忆。
我比较喜欢的是oz写的grep程序,因为有一本书《精通正则表达式》,这本书,讲得很透,我当时就有了读正则表达式源码的想法。
再想起grep.c调regex.c文件中,的程序。
在regex.c中实现了,把正则表达式先翻译中中间伪码,再后再用中间伪码去进行匹配。匹配的过程是贪心法。像'a[1=9]*b'去匹配'ax1987b'时,[1-9]*能匹配完'1987b',但'b'无法匹配,于是要回退。我再想regex.c中那个remactch是如何实现的,我不记得代码的具体逻辑,但想个大概,心里觉得无比充实。
接着就想gawk1.10,因为这个程序同样矮小精悍,awk1.c,awk2.c,awk3.c,awk.y,awk.h,regex.c等几个核心文件。其中awk.h中定义了语法树和变量存储的一些核心数据结构。而awk.y中,是进行语法分析的bison文件。真正进行逻辑处理的,就是awk1.c,awk2.c,awk3.c这几个文件。其中awk1.c建立了一个程序处理的框架。先处理begin块,再读入一行,处理,直到处理完文件,最后处理end块。而具体的处理逻辑在awk2.c的一个函数中。至于awk3.c主要是一些内部函数的实现。
于是,又细细的思考每个文件的内容。心想,这些牛人真厉害
如何在大脑中模拟代码运行
最新推荐文章于 2024-01-21 03:45:26 发布