- 18
- 0
- 约3.86千字
- 约 12页
- 2021-06-25 发布于上海
- 举报
TEST 语言词法分析器
实验一 TEST 语言词法分析器
一、 实验目的
熟悉词法分析程序的设计方法。
二、 实验内容
1、 在 windows 的VC 环境下,编写 TEST 语言的词法分析程序;
2、 修改附录 B 的词法分析程序,添加保留字 do、双分界符和
||以及单分界符!的处理。
三、 设计思想
算法的基本任务是从源程序中识别出具有独立意义的单词符号,
其基本思想是根据扫描到单词符号的第一个字符的种类,分析与代码
中相应的单词符号。
四、 源程序
#includestdio.h
#includestring.h
#includectype.h
#define keyword 8
char
*key[keyword]={if,int,for,while,
do,return,break,continue};
#define yunsuan 9
char yun[yunsuan]=+-*/=!;
#define fenge 8
char fen[fenge]=,.;{}();
char ch;
int i,k;
char buff[20];
void output(int ,char*);
void scan(FILE *fp)
{ int j;
ch=fgetc(fp);
while(ch== ||ch==\n||ch==\t)
{ch=fgetc(fp);}
if(isalpha(ch)) /*输入的是字母,进行 标识
符处理*/
{buff[0]=ch;
i=1;
ch=fgetc(fp);
while(isalnum(ch)) /*如果是字母数字则组
合,否则结束*/
{ buff[i]=ch;
i++;
ch=fgetc(fp); }
buff[i]=\0; /*查找保留字*/
fseek(fp,-1,1);
j=0;
while((jkeyword)
strcmp(buff,key[j]))
j++;
if(j=keyword)
{ output(2,buff); }
else
{ output(1,buff); }
}
else if(isdigit(ch))
{ buff[0]=ch;
ch=fgetc(fp);
i=1;
while(isdigit(ch)) /*如果是数字则整合数
字*/
{buff[i]=ch;
i++;
ch=fgetc(fp);}
buff[i]=\0; /*整数整合结束*/
fseek(fp,-1,1);
output(3,buff);
}
else if(strchr(fen,ch)0) /*判断分隔符*/
{buff[0]=ch;
ch=fgetc(fp);
buff[1]=\0;
fseek(fp,-1,1);
output(5,buff);}
else if(strchr(yun,ch)0) /*判断运算符*/
{buff[0]=ch;
if(ch===) /*双运算符*/
{ch=fgetc(fp);
if(ch===)
{output(4,==);}
else
{fseek(fp,-1,1);
output(4,=);}}
else if(ch==)
{ ch=fgetc(fp);
if(ch===)
{output(4,=);}
else
{fseek(fp,-1,1);
output(4,);}}
else if(ch==)
{ ch=fgetc
您可能关注的文档
最近下载
- 常州大学《大学英语一》2024-----2025学年期末试卷(A卷).pdf VIP
- 艾米克变频器AMK3100中文说明书使用手册.pdf
- 必背古诗词75首(可打印) .pdf VIP
- 某知名汽车维修企业员工手册范本.docx VIP
- 2025年二建水利b证考试真题及答案.docx
- 安全驾驶教育培训课件.ppt VIP
- 汽车维修车间员工职责手册.docx VIP
- 黑龙江省哈尔滨市第三中学校2025-2026学年高二上学期9月月考物理试卷.docx VIP
- 初中语文名著导读--《骆驼祥子》知识点总结归纳.docx VIP
- 实施指南(2025)《DAT 22-2015 归档文件整理规则》.pptx VIP
原创力文档

文档评论(0)