精华内容
下载资源
问答
  • 编译原理 语义分析
    2021-05-20 17:31:05

    《编译原理语义分析程序设计》由会员分享,可在线阅读,更多相关《编译原理语义分析程序设计(9页珍藏版)》请在人人文库网上搜索。

    1、实验3 语义分析程序设计【实验目的】加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。【实验内容】采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。置初值调用scaner读下一个单词符号调用lrparser结束【设计思路】1、流程图输出四元式图2.1递归下降分析程序示意图2、源程序代码(1)scan.h /头文件-扫描程序#include#includechar prog80,token8;char ch;int syn,p,m,n,sum; /p是缓冲区prog的指针,m是token的指针char *rwtab6=begi。

    2、n,if,then,while,do,end;void scanner() /词法扫描程序memset(token,0,sizeof(token);/清空数组tokenm=0;while(ch= )+p;ch=progp; /读下一个字符;if(ch=a&ch=A&ch=a&ch=A&ch=0&ch=0&ch=0&ch)syn=21;+m;tokenm=ch;else if(ch=)syn=22;+m;tokenm=ch;elsesyn=20;break;case:token0=ch;+p;ch=progp;if(ch=)syn=24;token0=ch;elsesyn=23;break;ca。

    3、se:token0=ch;+p;ch=progp;if(ch=)syn=18;+m;tokenm=ch;+p;ch=progp;elsesyn=17;break;case+:syn=13;token0=ch;ch=prog+p;break;case-:syn=14;token0=ch;ch=prog+p;break;case*:syn=15;token0=ch;ch=prog+p;break;case/:syn=16;token0=ch;ch=prog+p;break;case=:syn=25;token0=ch;ch=prog+p;break;case;:syn=26;token0=ch;c。

    4、h=prog+p;break;case(:syn=27;token0=ch;ch=prog+p;break;case):syn=28;token0=ch;ch=prog+p;break;case#:syn=0; token0=ch;ch=prog+p;break;default:syn=-1;(2)yuyi.cpp / 语法分析主程序#include#includescan.hint kk=0,q=0,k=0;structchar result8;char agl8;char op8;char ag28;quad20;int lrparser();int yucu();int statemen。

    5、t();char * expression(void);char * term();char * factor();char * newtemp(void);void emit(char *result,char *agl,char *op,char *ag2);void main()kk=0;rewind(stdin);memset(prog,0,sizeof(prog);/清空数组progp=0;printf(n please input string:n);doch=getchar();progp+=ch;while(ch!=#);p=0;ch=prog0;scanner();lrpar。

    6、ser();for(int i=0;iq;+i)printf(%s=%s%s%sn,quadi.result,quadi.agl,quadi.op,quadi.ag2);int lrparser()int schain=0;kk=0;if(1=syn)scanner();schain=yucu();if(6=syn)scanner();if(0=syn|0=kk)printf(success!n);elseif(kk!=1) printf(缺end!);kk=1;elseprintf(缺begin!);kk=1;return schain;int yucu() /语句串分析函数int scha。

    7、in=0;schain=statement();while(26=syn)scanner();schain=statement();return schain;int statement()char tt8,eplace8;int schain=0;switch(syn)case 10:strcpy(tt,token);scanner();if(18=syn)scanner();strcpy(eplace,expression();emit(tt,eplace,);schain=0;else printf(缺赋值号!);kk=1;return schain;break;char * expre。

    8、ssion(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();while(13=syn)|(14=syn)strcpy(tt,token);scanner();strcpy(ep2,term();strcpy(tp,newtemp();emit(tp,eplace,tt,ep2);strcpy(eplace,tp);return eplace。

    9、;char *term(void)char *tp,*ep2,*eplace,*tt;tp=(char *)malloc(12);ep2=(char *)malloc(12);eplace=(char *)malloc(12);tt=(char *)malloc(12);strcpy(eplace,factor();while(15=syn)|(16=syn)strcpy(tt,token);scanner();strcpy(ep2,factor();strcpy(tp,newtemp();emit(tp,eplace,tt,ep2);strcpy(eplace,tp);return epla。

    10、ce;char *factor(void)char *fplace;fplace=(char *)malloc(12);strcpy(fplace, );if(10=syn)strcpy(fplace,token);scanner();else if(11=syn)itoa(sum,fplace,10);scanner();else if(27=syn)scanner();fplace=expression();if(28=syn)scanner();elseprintf()错误!);kk=1;elseprintf(错误!);kk=1;return fplace;char * newtemp(void)char *p;char m8;p=(char *)malloc(8);k+;itoa(k,m,10);strcpy(p+1,m);p0=t;return p;void emit(char *result,char *agl,char *op,char *ag2) /生成三地址语句送到四元式表中strcpy(quadq.result,result);strcpy(quadq.agl,agl);strcpy(quadq.op,op);strcpy(quadq.ag2,ag2);q。

    更多相关内容
  • 编译原理 语义分析

    2014-01-21 15:01:48
    计并实现一个一遍扫描的词法语法语义分析程序,将多条简单赋值语句翻译成后缀式或三地址代码,要求有一定的出错提示和错误恢复功能。
  • 编译原理词法分析,语义分析,抽象机实现。
  • 一个简单的编辑器 编译原理课设 对简单的程序进行语义分析并将中间代码生成
  • 编译原理语义分析实验报告.doc
  • 编译原理语义分析实验报告 如果需要配套的源代码可以在我上传的资源中找
  • 编译原理语义分析

    2012-07-05 22:51:41
    编译原理的的语义分析,源代码和工程文件,还有实验报告。
  • 实验课上写的编译原理语义分析和四元式代码的生成。
  • 完成语义分析 .. 非终结符号 D 实现定义两种类型int, real 变量的声明; .. 非终结符号 S 实现变量之间的*,+,: =(赋值运算) .. 两个关键字 int 和real .. 变量之间的*,+,/,: =(赋值) 运算只能使用声明过的变量...
  • 实现了编译原理语义分析的相关内容,利用java语言编写
  • 编译原理-语义分析

    2014-05-11 16:48:17
    实验报告内容要求:要给出所分析简单语言语法结构的词法说明、上下文无关文法描述,单词的种别编码方案,词法分析程序的主要算法思想,以及所采用的语法语义分析方法的算法思想的详细描述,测试结果与分析,实验总结...
  • 这是编译原理语义分析程序 c++实现,运用优先表的方法实现,简单,实用
  • 用VC++实现了一个编译器的功能,编译器可分为几个部分:词法分析器、语法分析器、语义分析器、中间代码生成器等等,该程序是本人自己编的,希望能够给大家提供参考
  • 自己写的编译原理的实验 语义分析 生成四元式(只实现了+、*、( )) 如果需要配套的实验报告可以在我上传的资源中找
  • 编译原理语义分析和中间代码生成实验报告,基于VS2010开发的纯C#的程序,附程序执行截图
  • 编译原理语义分析c语言实现,包括词法分析和语义分析
  • 大三上的编译原理语义分析程序,发了代码和相关文档说明 程序有注释
  • 编译原理语义分析java实现 语义分析 歧义分析
  • 免费)编译原理语义分析实验报告,word
  • 编译原理词法分析程序设计实验报告 实验目的 了解词法分析的主要任务 熟悉编译程序的编制 实验内容 根据某文法构造一基本词法分析程序找出该语言的关键字标识符整数以及其他一些特殊符号给出单词的种类和值 实验...
  • 编译原理综合训练 语义分析实验报告 指导老师 班级 学生 zeadom 学号 学生 学号 2011/6/29 目录 语言文法的形式化描述 3 语义规则 3 运行环境介绍 5 关键算法的流程图及文字解释 5 1本编译器的总框架 5 2在语义分析...
  • 编译原理语义分析与中间代码生成学习课程.pptx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,786
精华内容 14,714
关键字:

编译原理 语义分析