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

2020-03-02 09:27:59 来源:范文大全收藏下载本文

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

二.实验题目:词法分析

三.实验日期: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

}

编译原理实验报告

《编译原理》课程设计报告词法分析器

编译原理语法分析实验报告

编译原理课程报告

编译原理课程教学计划

编译原理实验二(设计一个词法分析器)

编译原理实验报告(小编推荐)

《编译原理》课程培训心得体会

《自动控制原理》课程实验报告()

《编译原理》课程设计说明第1次

《《编译原理》课程(词法分析)实验报告.doc》
《编译原理》课程(词法分析)实验报告
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文