下载此文档

编译原理实验-词法分析器的设计与实现.docx


文档分类:高等教育 | 页数:约33页 举报非法文档有奖
1/33
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/33 下载此文档
文档列表 文档介绍
南华大学
计算机科学与技术学院
实验报告
(2018~2019学年度第二学期)
课程名称编译原理
实验名称词法分析器的设计与
姓名学号
专业班级
地点
教师
.实验目的及要求
实验目的
>
charinput[1000];//输入用
charword[8];//获取到的单词
charch;
intsyn;〃种别码
intp;
intm;
intline;//行数
//关键字
char
keyword[][8]={"main","if","else","while","do","for","switch","case","int","double","float","long","void"};
{
{
}
voidscaner(void);
〃获取输入用
voidinit()
{
inti=0;
printf("\npleaseinputastring(endwith'#'):\n");
do{
scanf("%c",&ch);
input[i++]=ch;
}while(ch!='#');
}
〃判断是不是关键字
intisKey(char*str)
{
intn;
for(n=0;n<13;n++)
{
if(strcmp(str,keyword[n])==0)
{
syn=n;
return1;
}
return0;
}
{
{
}
〃判断是不是数字
intisDigit(charc)
{
if(c>='0'&&c<二'9')
return1;
else
return0;
}
〃判断是不是字母
intisLetter(charc)
{
if((c<='z'&&c>='a')||(c>='A'&&c<二Z))return1;
else
return0;
}
intisSpace(charc)
}
if(c==''||c=='\t'||c=='\n')
{
return1;
}
return0;
}
voidmain()
{
init();〃输入字符串
line=0;
p=0;
do{
scaner();
switch(syn)
{
case-1:
printf("youhaveinputawrongstringinline%d\n”,line);
break;
default:
printf("(%s,%d)\n",word,syn);
break;
}while(syn!=21);
}
voidscaner(void)
{
//清空word
for(m=0;m<8;m++)
{
word[m]='';
}
//读取字符
ch=input[p++];
m=0;
//当ch为空格或换行符时,继续往下读
while(isSpace(ch))
{
if(ch=='\n')
{
line++;
}ch=input[p++];
〃如果以字母开头
if(isLetter(ch))
{
//如果往后是字母或数字,把字符存入word中,然后往下继续

//用长超过8则截断
while((isLetter(ch)||isDigit(ch))&&m<8)
}
{
word[m++]=ch;
ch=input[p++];
}
P--;
syn=43;
word[m++]='\0';
isKey(word);//判断是不是关键字
}
〃如果是以数字开头,并且往后是数字
elseif(isDigit(ch))
{
while((isDigit(ch)11ch=='.')&&m<8)
word[m++]=ch;
ch=input[p++];
}
//如果数字之后是字母,则出错
if(isLetter(ch))
{
while(!isSpace(ch))
{
ch=input[p++];
}
syn=-1;
return;
}
P—-;
syn=42;
}
else
{
switch(ch)
〃比较运算符
word[m++]=ch;
}
ch=input[p++];
if(ch=='=')
{
syn=29;
word[m++]=ch;
else
syn=28;
P--;
break;
case'>':
word[m++]=ch;
ch=input[p++];
if(ch=='=')
{
syn=27;
word[

编译原理实验-词法分析器的设计与实现 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数33
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zhangshus
  • 文件大小146 KB
  • 时间2022-05-20