西安邮电大学

西 安 邮 电 大 学

(计算机学院)

课内实验报告

实验名称: 词法分析器

专业名称: 计算机科学与技术

班 级: 学生姓名:

一. 实验目的及实验环境

实验目的:构造一个简单的词法分析器

实验环境:VC6.0 二. 实验内容

利用C语言构造一个简单的词法分析器,可以识别出程序中的关键字,并且输出;

三.方案设计

首先自定义一些关键字,并且给他们分别设置一个数字标识符;

建立一个数组,保存每次扫描的单词,并判断两个字符串是否相等,若相等则输入其关键字,若不相等,则认为为定义的一个变量;

对于一些运算操作符,则依次进行比较,我采用的是switch语句进行判断; 在这个程序中,需要对空格进行识别,识别时,扫描到空格,则指针继续向前移动,直到遇到下一个字符即可。 对于数字,则认为为变量的赋值;

1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。

五.总结

1.实验过程中遇到的问题及解决办法;

在实验中,重要的问题是把字符分解出来,在分解的时候,应该临时保存在一个数组中,另外的话,需要识别空格,在碰到空格的时候,指针继续向前扫描,直至遇到下一个字符开始,根据字符串是否相等,来判断关键字;

六.附录:源代码(电子版)

#include #include

char prog[80],token[8],ch; int syn,p,m,n,sum;

char *rwtab[6]={

void scaner(void);

main() {

p=0;

printf(

scanf(

scaner(); switch(syn) {

case 11:

printf(

case -1:

printf(

default:

printf(

}while(syn!=0); }

void scaner(void) {

sum=0;

for(m=0;m

token[m++]= NULL;

ch=prog[p++]; m=0;

while((ch==' ')||(ch=='\n')) ch=prog[p++];

if(((ch='a'))||((ch='A'))) {

while(((ch='a'))||((ch='A'))||((ch>='0')&&(ch

token[m++]=ch; ch=prog[p++]; } p--; syn=10;

for(n=0;n

if(strcmp(token,rwtab[n])==0) {

syn=n+1; break; } }

else if((ch>='0')&&(ch

while((ch>='0')&&(ch

sum=sum*10+ch-'0'; ch=prog[p++]; } p--; syn=11; } else {

switch(ch) {

case '

token[m++]=ch; ch=prog[p++]; if(ch=='=') {

syn=22;

token[m++]=ch; } else {

syn=20; p--; } break;

case '>':

token[m++]=ch; ch=prog[p++]; if(ch=='=') {

syn=24;

token[m++]=ch; } else {

syn=23; p--; } break;

token[m++]=ch; ch=prog[p++]; if(ch=='+') {

syn=17;

token[m++]=ch; } else {

syn=13; p--; } break;

case '-':

token[m++]=ch; ch=prog[p++]; if(ch=='-') {

syn=29;

token[m++]=ch; } else {

syn=14; p--; } break;

case '!':

ch=prog[p++]; if(ch=='=') {

syn=21;

token[m++]=ch; } else {

syn=31; p--; } break;

token[m++]=ch; ch=prog[p++]; if(ch=='=') {

syn=25;

token[m++]=ch; } else {

syn=18; p--; } break;

case '*':

syn=15;

token[m++]=ch; break;

case '/':

syn=16;

token[m++]=ch; break;

case '(': syn=27;

token[m++]=ch; break;

case ')':

syn=28;

token[m++]=ch; break;

case '{': syn=5;

token[m++]=ch; break;

case '}': syn=6;

token[m++]=ch; break;

case ';':

syn=26;

token[m++]=ch; break;

case '\

token[m++]=ch; break;

case '#': syn=0;

token[m++]=ch; break;

case ':':

syn=17;

token[m++]=ch; break;

default: syn=-1; break; } }

token[m++]='\0'; }


相关文章

  • 20**年西安邮电大学排名
  • 2014年西安邮电大学全国排名第414位 西安邮电大学是由陕西省人民政府与工业和信息化部共建院校,学校坐落于历史文化名城西安.是一所以工为主,以信息科学技术为特色,工.管.理.经.文.法.艺多学科协调发展的普通高等学校,是国家在西北地区布局的唯一一所邮电通信类高等学校.教育部"卓越工程师教 ...

  • 通信工程简介
  • 专业简介 通信专业实验室 通信工程(Communication Engineering)专业是信息科学技术发展迅速并极具活力的一个领域,尤其是数字移动通信.光纤通信.Internet 网络通信使人们在传递信息和获得信息方面达到了前所未有的便捷程度.通信工程具有极广阔的发展前景,也是人才严重短缺的专业 ...

  • 环保晚会主持词
  • A:尊敬的各位领导 B:各位来宾 同学们. C:亲爱的老师们 D:同学们.大家 合:晚上好 A:这里是西安邮电学院第七届社团巡礼月开幕式晚会的现场 这里是西安邮电学院第七届社团巡礼月开幕式晚会的现场, A:这里是西安邮电学院第七届社团巡礼月开幕式晚会的现场,我是 春天是岁月轮回的第一季, A:春天是 ...

  • 原中央部委属高校
  • 原中央部委属高校 1998年后教育体制改革,原国务院许多部委所属高校或被教育部收编,或下放至各省,部委学校快成历史名词.为纪念部委学校特推出原部委学校排行版.(加粗为部委属重点大学) 原航空航天部高校排名 哈尔滨工业大学 北京航空航天大学 西北工业大学 南京航空航天大学 南昌航空学院 沈阳航空学院 ...

  • 计算机_考研最好的学校排名
  • 计算机 考研最好的学校排名 计算机系统结构前20名(总共47所高校): 1.清华大学, 2.华中科技大学, 3.西安交通大学, 4.上海交通大学, 5.浙江大学, 6.西安电子科技大学, 7.武汉大学, 8.复旦大学, 9.哈尔滨工业大学, 10.东北大学, 11.北京大学, 12.东南大学, 13 ...

  • 你的成绩能上一本吗?各省一本批次录取院校分数线大汇总[湘鄂篇]
  • 你的成绩能上一本吗?各省一本批次录取院校分数线大汇总 [湘鄂篇] 很多同学都问学习哥,我一模考了***分,能考上一本大学吗?能考到哪里呢?这个问题太笼统,因为涉及到你所用的试卷.所在的省份,以及当年的录取分数线和参加本省一批录取的院校有哪些. 其实,最具参考价值的,还是往年一批院校在本省的录取分数线 ...

  • 20**年承认河南美术联考(统考)成绩的院校名单
  • 2017年承认河南美术联考(统考)成绩的院校名单 因部分院校目前尚未公布分省招生计划,所以参考了2016年院校分省招生计划:在此提示同学及家长此汇总仅作为参考使用,最终在本省是否招生请以6月份院校公布的分省招生计划为准! 内蒙古 内蒙古师范大学 内蒙古农业大学 呼和浩特民族学院 宁夏区 宁夏师范学院 ...

  • 电子商务专业--20**年本科212所中国大学分专业排名
  • 110209 电子商务 (212) 排名 学校名称 等级 排名 学校名称 等级 排名 学校名称 等级 1 西安交通大学 A+ 15 西南财经大学 A 29 广东工业大学 A 2 华南理工大学 A+ 16 东北财经大学 A 30 中国矿业大学 A 3 暨南大学 A+ 17 重庆大学 A 31 上海财经 ...

  • 20**年山东省高考一批录取分数线
  • 清华大学 689 北京大学 688 复旦大学 678 北京大学医学部 679 上海交通大学 673 中国人民大学 670 浙江大学 667 中国科学技术大学 665 南京大学 663 北京航空航天大学 660 上海交通大学医学院 653 中央财经大学 650 西安交通大学 640 对外经济贸易大学 ...

  • 机械类专业高校排行榜
  • 机械类专业高校排行榜 排名得分排名得分排名得分排名得分排名得分 1.10003 清华大学 1 93.32 6 87.98 1 100 6 81.95 3 98.54 2.10213哈尔滨工业大学 2 92.9 3 93.86 2 94.59 4 85.12 4 97.71 3.10698西安交通大学 ...

© 2024 范文中心 | 联系我们 webmaster# onjobs.com.cn