《编译原理》课程(词法分析)实验报告_编译原理实验词法分析

2020-02-27 其他范文 下载本文

《编译原理》课程(词法分析)实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“编译原理实验词法分析”。

一.实验序号:《编译原理》第一次实验

二.实验题目:词法分析

三.实验日期:2010.10

四.实验环境(操作系统,开发语言)

操作系统:Windows

开发语言:C

五.实验内容(实验要求)

a)将标识符的词法改为“以大写字母或小写字母开头,后面可以跟大写字

母或小写字母或数字或下划线”。

b)将中的表示相等关系的单词“=”改为“= =”

c)将原来的无小数的数改为可以有小数的数

六.实验步骤

a)打开VC++,找到getsym()项目。

int getsym()

{...}

在getsym()函数中设置断点,F10逐过程调试

根据要求a修改为

if(ch>='a'&&ch='A'&&ch

往后面看,修改while(ch>='a' && ch='0' && ch='A' && ch

b)在检测赋值符号的程序段中找到等号 = 的判断代码,改变成为 = = 即

可。

c)在获取整数数字的值的程序段后面添加判断小数点的代码。如果是,即

读取符号并且按照小数的要求将其缩小并且累加到总的符号串中。

七.实验体会(包括收获、心得体会、存在的问题及解决问题的方法、建议等)

通过实验,如果要修改代码的话,首先应该读懂源码,在修改之前了解到程序段的功能是什么,然后再在相应的行进行修改添加,再进行合理的调试。如果问题太过困难可以查询资料或与同学进行讨论

八.实验结果(关键源程序)

a)

int getsym()

{

int i,j,k;

while(ch==' '||ch==10||ch==9)/*忽略空格,换行和TAB*/{

getchdo;

}

if(ch>='a'&&ch='A'&&ch

k=0;

do{

if(k

{

a[k]=ch;

k++;

}

getchdo;

}while(ch>='a' && ch='0' && ch='A' && ch

if(ch>='0'&&ch

k=0;

num=0;

sym=number;

do{

//435

num=10*num+ch-'0';

k++;

getchdo;

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

if(ch=='.')

{

k++;

sym=period;

getchdo;

sym=number;

int div=10;

do{num=num+(ch-'0')/div;

k++;

getchdo;

div=div*10;

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

}

b)

else

{

if(ch=='>')//检测大于或大于等于符号{

getchdo;

if(ch=='=')//add by M

{

sym=geq;//构成>=

getchdo;

}

else

{

sym=gtr;//否则就是一个单独的>号}

}

else

{

if(ch=='=')

{

getchdo;

if(ch=='=')

{

sym=deq;

getchdo;

}

else

{

sym=eql;

}

}

c)else

{if(ch == ’.’)

{k=10;

getchdo;

do{num=num+(ch-'0')/k;

k=k*10;

getchdo;

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

}

《《编译原理》课程(词法分析)实验报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
《编译原理》课程(词法分析)实验报告
点击下载文档
相关专题 编译原理实验词法分析 实验报告 词法 原理 编译原理实验词法分析 实验报告 词法 原理
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文