东北大学文编译原理实验一.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 1 实验题目:词法分析。 2 实验目的:熟悉并实现一个简单的扫描器。 3 实验内容 1、设计扫描器的自动机; 2、设计翻译、生成Token的算法; 3、编写代码并上机调试运行通过。 4 概要设计 (1)标示符及常量 标示符 0 字符常量 1 字符串常量 2 数字常量 3 关键字表 单词 编码 main 4 char 5 int 6 float 7 struct 8 (3)界符表 + 9 * 10 { 11 } 12 = 13 , 14 [ 15 ] 16 ; 17 “ 18 ” 19 ‘ 20 ’ 21 ( 22 ) 23 5 源程序(包含注释) #includestring.h #includestdio.h #includestdlib.h #includectype.h #includeiostream using namespace std; char *kt[5]={main,char,int,float,struct},TOKEN[120],ch; //定义关键字 char *pt[100]={+,*,:,:=,=,,,(,),;}; //定义界符 char *it[100]; //定义标识符 char *ct[100]; //定义常数 int j=0,k=0; void out(char *TOKEN, int a){ //输出函数 cout(TOKEN,a)endl; } int lookup(char *TOKEN){ //关键字匹配函数 int m,i; for(i=0;i=4;i++){ if((m=strcmp(TOKEN,kt[i]))==0) return(i+4); } return(0); } int lookupnum(char *TOKEN){ //常数匹配函数 int m,i; for(i=0;ct[i]!=NULL;i++) { m=strcmp(TOKEN,ct[i]); if(m==0) return i; } return -1; } int lookupiden(char *TOKEN){ //标识符匹配函数 int m,i; for(i=0;it[i]!=NULL;i++){ if((m=strcmp(TOKEN,it[i]))==0) return i; } return -1; } void scanner(FILE *fp){ //扫描函数 char TOKEN[20]={\0}; char ch; int i,c,w,v; ch=fgetc(fp); //获取字符,指针fp并自动指向下一个字符 if(isalpha(ch)){ //判断该字符是否是字母 TOKEN[0]=ch; ch=fgetc(fp); i=1; while(isalnum(ch)){ //判断该字符是否是字母或数字 TOKEN[i]=ch; i++; ch=fgetc(fp); } TOKEN[i]=\0; c=lookup(TOKEN); fseek(fp,-1,1); //

文档评论(0)

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

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

1亿VIP精品文档

相关文档