编译如原项理实验报告.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文档。上传文档
查看更多
编译原理实验报告实验一 词法分析程序实现一、实验目的与要求通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。二、实验设计语言中具有的单词包括五个关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。单词的分类:构造上述语言中的各类单词符号及其分类码表。表I 语言中的各类单词符号及其分类码表单词符号类别编码类别码的助记符单词值begin1BEGINend2ENDif3IFthen4THENelse5ELSE标识符6ID字母打头的字母数字串整常数7INT数字串8LT=9LE=10EQ11NE12GT=13GE:=14IS+15PL-16MI*17MU/18DI识别表I所列语言中的部分单词的DFA及相关的语义过程将表I单词集中的整常数改为无符号常数,无符号常数的单词分类码助记符:UCON描述无符号数的正规文法和状态转换图:无符号数的右线性文法G1[无符号数]如下:〈无符号数〉→ d〈余留无符号数〉〈无符号数〉→ ·〈小数部分〉〈无符号数〉→ d〈余留无符号数〉→ d〈余留无符号数〉〈余留无符号数〉→ ·〈十进小数〉〈余留无符号数〉→ E〈指数部分〉〈余留无符号数〉→ d〈余留无符号数〉→ ·〈十进小数〉→ E〈指数部分〉〈十进小数〉→ d〈十进小数〉〈十进小数〉→ d〈小数部分〉→ d〈十进小数〉〈小数部分〉→ d〈指数部分〉→ d〈余留整指数〉〈指数部分〉→ +〈整指数〉〈指数部分〉→ -〈整指数〉〈指数部分〉→ d〈整指数〉→ d〈余留整指数〉〈整指数〉→ d〈余留整指数〉→ d〈余留整指数〉〈余留整指数〉→ d图所示为上述文法的状态转换图,其中编号0、1、2、…、6分别代表非终结符号无符号数、余留无符号数、十进小数、小数部分、指数部分、整指数及余留整指数。文法G1[无符号数]的状态转换图包含语义处理过程的识别无符号数的状态矩阵三、源程序Lex.h #ifndef _LEX_H#define _LEX_H#define MAX_LENGTH 256#define MAX_KET_NUMBER 6#define EndState -1#define BEGIN 1#define END 2#define IF 3#define THEN 4#define ELSe 5#define ID 6#define UCON 7#define LT 8#define LE 9#define EQ 10#define NE 11#define GT 12#define GE 13#define IS 14#define PL 15#define MI 16#define DI 17#define MUL 18#define DIV 19#define PLUS 20#define MINUS 21#define LKUOHAO 22#define RKUOHAO 23#define JING 40/////////////////////////////////////无符号数识别有关定义#define DIGIT 51#define POINT 52#define OTHER 53#define POWER 54#define ZHENG 55#define FU 56#endifLex.c#includestdio.h#includestdlib.h#includelex.h#includestring.h#includectype.h#includemath.hint isInt=1;//数的类型 1 整数 0 小数static int CurrentState=0;int number_state_switch(int state, char c);////////////////////////////////char token[MAX_LENGTH];//存放识别符号串 const char *key_work[MAX_KET_NUMBER]={,begin,end,if,then,else};const char *MAP[]={ NULL,BEGIN,END,IF,THEN,ELSE,ID,UCON,LT, LE,EQ,NE,GT,GE,IS,PL,MI,DI,MUL,DIV,PLUS,MINUS,(,)} ;//类别码映射为字符用于输出FILE *ifp,*ofp;//输入输出文件int lex(); //从输入文件 识别一个符号存于 tok

文档评论(0)

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

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

1亿VIP精品文档

相关文档