[编译原理实验报告三.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[编译原理实验报告三

实验三 语义分析程序实现一、实验目的与要求在实现词法、语法分析程序的基础上,编写相应的语义子程序,进行语义处理,加深对语法制导翻译原理的理解,进一步掌握将语法分析所识别的语法范畴变换为某种中间代码(四元式)的语义分析方法,并完成相关语义分析器的代码开发。二、一般实现方法语法制导翻译模式是在语法分析的基础上,增加语义操作来实现的,实际上是对前后文无关文法的一种扩展。一般而言,首先需要根据进行的语义分析工作,完成对给定文法的必要拆分和语义动作的编写,从而为每一个产生式都配备相应的语义子程序,以便在进行语法分析的同时进行语义解释。即在语法分析过程中,每当用一个产生式进行推导或归约时,语法分析程序除执行相应的语法分析动作之外,还要调用相应的语义子程序,以便完成生成中间代码、查填有关表格、检查并报告源程序中的语义错误等工作。每个语义子程序需指明相应产生式中各个符号的具体含义,并规定使用该产生式进行分析时所应采取的语义动作。这样,语法制导翻译程序在对源程序从左到右进行的一遍扫描中,既完成语法分析任务,又完成语义分析和中间代码生成方面的工作。本实验要求从编译器的整体设计出发,重点通过对实验二中语法分析程序的扩展,完成一个编译器前端程序的编写、调试和测试工作,形成一个将源程序翻译为中间代码序列的编译系统。三、实验内容基本实验题目:对文法G2[算术表达式]中的产生式添加语义处理子程序,完成运算对象是简单变量(标识符)和无符号数的四则运算的计值处理,将输入的四则运算转换为四元式形式的中间代码。输入:包含测试用例(由标识符、无符号数和+、?、*、/、(、)构成的算术表达式)的源程序文件。输出:将源程序转换为中间代码形式表示,并将中间代码序列输出到文件中。若源程序中有错误,应指出错误信息。五、源程序# include stdio.h# include ctype.h# include string.h# include math.h# include stdlib.h# define UNKNOWN -1# define LB 0# define RB 1# define PL 2# define MI 3# define MU 4# define DI 5# define UCON 6 //Suppose the class number of unsigned constant is 7# define OVER # define LT 8# define LE 9# define EQ 10# define NE 11# define GT 12# define GE 13# define IS 19//14至18被五个关键字占用# define ID 20#define MAX_KEY_NUMBER 20 /*关键字的数量*/#define KEY_WORD_END waiting for your expanding /*关键字结束标记*/char *KeyWordTable[MAX_KEY_NUMBER]={begin,end, if, then, else, KEY_WORD_END};char TOKEN[20]=;//存储已扫描的单词char ch= ;//用于存储带判断的字符int row=1;////////////////////////无符号数部分#define DIGIT 1#define POINT 2#define OTHER 3#define POWER 4#define PLUS 5#define MINUS 6#define ClassOther 200#define EndState -1int index=0;int w,n,p,e,d;int Class; //Used to indicate class of the wordint ICON;float FCON;static int CurrentState; //Used to present current state, the initial value:0////////////////////////语法分析部分////////////////////////产生式// 1、E-E+T 2、E-E-T 3、E-T 4、T-T*F 5、T-T/F 6、T-F 7、F-(E) 8、F-i# define SMAX 256///////////////////////goto表的列项# define E 0# define T 1# define F 2int StateStack[SMAX];//状态栈int StackPoint;//状态栈指针int TopState;//作为状态栈盏栈顶指针int InputWordT

文档评论(0)

zhonhua5000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档