语法解析
文章平均质量分 81
tyler_download
这个作者很懒,什么都没留下…
展开
-
自己动手写编译器:First 集合,Follow 集合和 Select 集合
本文介绍了编译原理中语法解析时,自动化生成语法解析表的若干基础概念原创 2024-05-07 12:31:33 · 522 阅读 · 0 评论 -
自制Monkey语言编译器:解释执行if..else判断语句
任何编程语言都少不了条件判断语句,Monkey语言也一样,有自己的If…else条件判断指令,本节我们看看如何解释执行该条件判断语句。根据我们原有的解释执行机制,我们只要在原框架的基础上添加若干代码就可以实现本节功能。当本节代码完成后,执行结果如下: 如图中的if else 语句被编译器解释执行后,在控制台的输出如下: 根据输出可知,编译器在执行了if里面的条件判断后,执行了if模块里...原创 2018-03-29 16:56:13 · 705 阅读 · 0 评论 -
自制Monkey语言编译器:解释执行return语句和错误处理控制
在高级编程语言中,大多含有一个指令叫return,也就是程序的执行指令流遇到该语句后不再往下执行,而是返回上一层,如果return后面附带数据的话,程序会把数据夹带到调用栈上一层的代码执行路径。本节我们就给Monkey语言编译器增加解释执行return语句的功能,完成本节代码后,编译器能解释执行如下代码:代码中存在两个if 间套,内层if执行return语句附带返回整数10,外层if 最后...原创 2018-04-03 17:57:39 · 458 阅读 · 0 评论 -
编译器开发:C语言循环控制语句的解析
任何编程语言,最常用的就是循环语句了,无论何种编程语言,都必须包含循环控制语句,在C语言中,for, while, do..while 这三种循环语句的使用,占据了源程序代码的绝大部分,因此,要开发C编译器,对这三种循环语句的语法解析是必不可少的原创 2016-11-15 15:44:00 · 1395 阅读 · 0 评论 -
编译器动手实践之:实现C语言函数定义的语法解析1
C语言是一种面向过程的语言,面向过程是指,将实现一个逻辑功能的代码集中到一起,每次需要使用的时候,再调用这些代码集合,这种代码集合就是函数。写C语言其实就是写一个个函数,因此对函数实现的语法解析是C语言编译器语法解析中,最复杂的,我们以前解析的各种结构体,枚举类型,变量定义等,都会间套到函数实现中,于此函数实现的解析要能够对所有C语言的数据类型进行处理,因此函数定义的解析是最为复杂的。原创 2016-11-01 15:44:41 · 2091 阅读 · 0 评论 -
C语言结构体struct的语法解析
本节,我们着重研究结构体定义,也就是struct 这种变量定义,C语言编译器是如何解析的,本节我们要解析的结构体定义如下:struct tag { int x; long y; char z; struct tag* p;}name;原创 2016-10-06 17:05:52 · 5319 阅读 · 0 评论 -
C语言结构体符号表和类型系统的代码实现
上一节,我们研究了如何在语法上解析结构体,这一节,我们在语法分析的基础上,实现结构体符号表和类型系统的代码,我们要解析的结构体定义如下:struct tag { int *a, b; long c; sturct tag *d;}name;原创 2016-10-17 11:39:27 · 3992 阅读 · 0 评论 -
函数声明的语法识别及类型系统建立
上一节,我们已经实现了变量声明语句的语法识别,并在识别过程中建立了变量的类型系统,这一节,我们看看函数接口声明的语法识别过程,并在识别过程中,为函数建立类型系统。这次,我们要分析的C语言语句如下:void f(int x, short y, long z);原创 2016-09-27 22:13:58 · 967 阅读 · 0 评论 -
C语言的符号表和类型系统2
阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程:http://study.163.com/course/courseMain.htm?courseId=1002830012这一节,我们继续就上一节讨论的内容,继续就符号表和类型系统的构建进行深入的探讨。基于上一节的基础,我们看看,编译器如何为一个变量构建它在符号表中的记录和类型系统。原创 2016-09-12 15:58:29 · 3253 阅读 · 3 评论 -
编译原理动手实操,用java实现编译器-算术表达式及其语法解析器的实现
大家在参考本节时,请先阅读以下博文,进行预热:http://blog.csdn.net/tyler_download/article/details/50708807 本节代码下载地址:http://pan.baidu.com/s/1sjWiwPn代码的理解和运行是吃透编译原理的关键,如果我们看的是爱情动作片,自然选择无码的好,但如果看得是计算机课程,则必须有码,无码的计算机理原创 2016-02-26 17:14:53 · 6099 阅读 · 3 评论