实验一实验报告

实验一、词法分析实验

专业:商业软件工程   姓名:郑杰升  学号;201506110235

一、        实验目的

编写一个关于词法分析的程序,加深对课堂教学内容的理解,提高词法分析方法的实践能力。

 

 

二、        实验内容和要求

要求:

-输入:源程序字符串

-输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串; sum为整型常数。

三、        实验方法、步骤及结果测试

  1. 1.      源程序名:压缩包文件(rarzip)中源程序名词法分析.c

可执行程序名:词法分析.exe

  1. 2.      原理分析及流程图

 

  1. 1.      主要程序段及其解释:

实现主要功能的程序段,重要的是程序的注释解释。

识别特定字符串:

char *keys[6]={"begin","if","then","while","do","end"};

¦¦

if(strcmp(token,keys[n])==0)

            /*extern int strcmp(const char *s1,const char * s2);

            比较两个字符串

            设这两个字符串为str1,str2,

            若str1==str2,则返回零;

            若str1>str2,则返回正数;

若str1<str2,则返回负数。*/

        {

            syn=n+1;

            break;

        }

识别两个组成的字符:

  case '<':

            token[m++]=ch;

            ch=prog[p++];

            if(ch=='=')

            {

                syn=21;

                token[m++]=ch;

            }

            else

            {

                syn=20;

                p--;

            }

        break;

syn为字符对应值

  1. 2.      运行结果及分析

输入正确字符会输出对应值,输入错误字符则会报错。

四。        实验总结

在报错时,由于在程序中将错误识别值设为10,所以在输出时会出现(0    10)这种情况,暂时没有想到办法更好的显示。

并且如果错误字符串后连续输入多个连续字符会出现无法识别的情况,同样暂时无法解决。

 

 

原文地址:https://www.cnblogs.com/jiesheng/p/5958312.html