社区
下载资源悬赏专区
帖子详情
编译综合实验:选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序并采用编译的方法将C语言表达式翻译成后缀式形式下载
weixin_39821620
2019-06-01 02:30:14
选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序并采用编译的方法将C语言表达式翻译成后缀式形式
相关下载链接:
//download.csdn.net/download/skylqf01/2425041?utm_source=bbsseo
...全文
75
回复
打赏
收藏
编译综合实验:选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序并采用编译的方法将C语言表达式翻译成后缀式形式下载
选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序并采用编译的方法将C语言表达式翻译成后缀式形式 相关下载链接://download.csdn.net/download/skylqf01/2425041?utm_source=bbsseo
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
编译
综合
实验
:
选择
部分
C
语言
的
语法
成
分
,
设计
其
词法
分析
程序
、
语法
语义
分析
程序
并
采用
编译
的
方法
将C
语言
表达
式
翻译
成
后缀
式
形
式
选择
部分
C
语言
的
语法
成
分
,
设计
其
词法
分析
程序
、
语法
语义
分析
程序
并
采用
编译
的
方法
将C
语言
表达
式
翻译
成
后缀
式
形
式
编译
原理
实验
报告
语法
分析
语义
分析
词法
分析
详细的源
程序
附录c
编译
程序
实验
实验
目的:用c
语言
对一个简单
语言
的子集编制一个一遍扫描的
编译
程序
,以加深对
编译
原理的理解,掌握
编译
程序
的实现
方法
和技术。
语法
分析
C2.1
实验
目的 编制一个递归下降
分析
程序
,实现对
词法
分析
程序
所提供的单词序列的
语法
检查和结构
分析
. C2.2
实验
要求 利用C
语言
编制递归下降
分析
程序
,并对简单
语言
进行
语法
分析
. C2.2.1待
分析
的简单
语言
的
语法
实验
目的 通过上机实习,加深对
语法
制导
翻译
原理的理解,掌握将
语法
分析
所识别的
语法
成
分
变换为中间代码的
语义
翻译
方法
.
实验
要求
采用
递归下降
语法
制导
翻译
法,对算术
表达
式
、赋值语句进行
语义
分析
并生
成
四元
式
序列。
实验
的输入和输出 输入是
语法
分析
提供的正确的单词串,输出为三地址指令
形
式
的四元
式
序列。 例如:对于语句串 begin a:=2+3*4;x:=(a+b)/c end# 输出的三地址指令如下: (1) t1=3*4 (2) t2=2+t1 (3) a=t2 (4) t3=a+b (5) t4=t3/c (6) x=t4 算法思想 1设置
语义
过程 (1) emit(char *result,char *arg1,char *op,char *ag2) 该函数功能是生
成
一个三地址语句送到四元
式
表中。 四元
式
表的结构如下: struct {char result[8]; char ag1[8]; char op[8]; char ag2[8]; }quad[20]; (2)char *newtemp() 该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,…. Char *newtemp(void) { char *p; char m[8]; p=(char *)malloc(8); k++; itoa(k,m,10); strcpy(p+1,m); p[0]=’t’; return(p); } (2)主
程序
示意图如图c.10所示。 (2) 函数lrparser在原来
语法
分析
的基础上插入相应的
语义
动作:将输入串
翻译
成
四元
式
序列。在
实验
中我们只对
表达
式
、赋值语句进行
翻译
。
语义
分析
程序
的C
语言
程序
框架 int lrparser() { int schain=0; kk=0; if(syn=1) { 读下一个单词符号; schain=yucu; /调用语句串
分析
函数进行
分析
/ if(syn=6) { 读下一个单词符号; if(syn=0 && (kk==0)) 输出(“success”); } else { if(kk!=1 ) 输出 ‘缺end’ 错误;kk=1;} else{输出’begin’错误;kk=1;} } return(schain); int yucu() { int schain=0; schain=statement();/调用语句
分析
函数进行
分析
/ while(syn=26) {读下一个单词符号; schain=statement(); /调用语句
分析
函数进行
分析
/ } return(schain); } int statement() { char tt[8],eplace[8]; int schain=0; {switch(syn) {case 10: strcpy(tt,token); scanner(); if(syn=18) {读下一个单词符号; strcpy(eplace,expression()); emit(tt,eplace,””,””); schain=0; } else {输出’缺少赋值号’的错误;kk=1; } return(schain); break; } } char *expression(void) {char *tp,*ep2,*eplace,*tt; tp=(char *)malloc(12);/分配空间/ ep2=(char *)malloc(12); eplace=(char *)malloc(12); tt =(char )malloc(12); strcpy(eplace,term ());/调用term
分析
产生
表达
式
计算的第一项eplace/ while(syn=13 or 14) { 操作符 tt= ‘+’或者‘—’; 读下一个单词符号; strcpy(ep2,term());/调用term
分析
产生
表达
式
计算的第二项ep2/ strcpy(tp,newtemp());/调用newtemp产生临时变量tp存储计算结果/ emit(tp,eplace,tt,ep2);/生
成
四元
式
送入四元
式
表/ strcpy(eplace,tp); } return(eplace); } char *term(void)/仿照函数expression编写/ char *factor(void) {char *fplace; fplace=(char *)malloc(12); strcpy(fplace, “ ”); if(syn=10) {strcpy(fplace,,token);/将标识符token的值赋给fplace/ 读下一个单词符号; } else if(syn=11) {itoa(sum,fplace,10); 读下一个单词符号; } else if (syn=27) {读下一个单词符号; fplace=expression();/调用expression
分析
返回
表达
式
的值/ if(syn=28) 读下一个单词符号; else{输出‘}’错误;kk=1; } } else{输出‘(’错误;kk=1; } return(fplace); }
C
语言
复杂
表达
式
与指针应用视频精讲-C
语言
专题第4
部分
本课程是指针
部分
的话题,首先讲解了数组指针、指针数组、函数指针等常见的复杂指针
表达
式
的
分析
方法
、含义,再引入typedef关键字并详细讲解;后讲了二重指针、二维数组以及两者结合的运算。通过本章学习希望大家对指针的理解和运用上升到一定高度。
用C
语言
写的
表达
式
词法
分析
程序
词法
分析
是
编译
中很基础同时又是很重要的一步,以
表达
式
词法
分析
为例,其主要思想是当扫描输入文件时,会根据规则识别每个单词,然后输出相关信息到输出文件,为
语法
分析
提供接口。在
表达
式
中,单词包括数值常数、标识符、运算符、分隔符。
编译
原理课设--
词法
分析
、
语法
和
语义
分析
关于
编译
原理课设的要求,用C
语言
实现的
词法
分析
、
语法
分析
及
语义
分析
。主要完
成
定义语句和算术
表达
式
的
分析
。
下载资源悬赏专区
12,860
社区成员
12,400,163
社区内容
发帖
与我相关
我的任务
下载资源悬赏专区
CSDN 下载资源悬赏专区
复制链接
扫一扫
分享
社区描述
CSDN 下载资源悬赏专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章