编译原理实验报告词法分析器(内含源代码).docx

编译原理实验报告词法分析器(内含源代码).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验报告词法分析器(内含源代码)

编译原理实验(一) ——词法分析器 实验描述 运行环境:vc++2008 对某特定语言A ,构造其词法规则。 该语言的单词符号包括: 1该程序能识别的单词符号及类别说明表 单词 类别 PROGRAM 0 NOT 1 BEGIN 2 IF 3 END 4 THEN 5 VAR 6 ELSE 7 INT 8 WHILE 9 AND 10 DO 11 OR 12 标识符 13 常数 14 + 15 - 16 ( 17 ) 18 , 19 ; 20 = 21 22 23 * 24 ** 25 = 26 = 27 != 28 2状态转换图 3程序流程: 词法分析作成一个子程序,由另一个主程序调用,每次调用返回一个单词对应的二元组,输出标识符表、常数表由主程序来完成。 实验目的 通过动手实践,使学生对构造编译系统的基本理论、编译程序的基本结构有更为深入的理解和掌握;使学生掌握编译程序设计的基本方法和步骤;能够设计实现编译系统的重要环节。同时增强编写和调试程序的能力。 实验任务 编制程序实现要求的功能,并能完成对测试样例程序的分析。 实验原理 char set[1000],str[500],strtaken[20];//set[]存储代码,strtaken[]存储当前字符 char sign[50][10],constant[50][10];//存储标识符和常量 定义了一个Analyzer类 class Analyzer{ public: Analyzer(); //构造函数 ~Analyzer(); //析构函数 int IsLetter(char ch); //判断是否是字母,是则返回 1,否则返回 0。 int IsDigit(char ch); //判断是否为数字,是则返回 1,否则返回 0。 void GetChar(char *ch); //将下一个输入字符读到ch中。 void GetBC(char *ch); //检查ch中的字符是否为空白, 若是,则调用GetChar直至ch进入一个非空白字符。 void Concat(char *strTaken, char *ch); //将ch中的字符连接到strToken之后。 int Reserve(char *strTaken); //对strTaken中的字符串查找保留字表,若是一个保留字返回它的数码,否则返回0。 void Retract(char *ch) ; //将搜索指针器回调一个字符位置,将ch置为空白字符。 void input();//向存放输入结果的字符数组输入一句语句。 void display();//输出一些程序结束字符显示样式 int analyzerSubFun();//词法分析器子程序,为了实现词法分析的主要功能。 代码实现 // cifa.cpp : 定义控制台应用程序的入口点。 // #include stdafx.h #include stdio.h #include string.h #include iostream using namespace std; char set[1000],str[500],strtaken[20];//set[]存储代码,strtaken[]存储当前字符 char sign[50][10],constant[50][10];//存储标识符和常量 //int Words[500][10]; char ch;//当前读入字符 int sr,to=0;//数组str, strtaken 的指针 int st=0,dcount=0; int id=0; static int line=1; int h,l; typedef struct Words /*放置二元组*/ { int num; char letters[20]; }DS; DS Words[500]; typedef struct words { char word[20]; int type; }WORDS; WORDS words[]={ {program,0}, {not,1}, {begin,2}, {end,3}, {if,4}, {then,5}, {var,6}, {else,7},

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档