实验报告1—’词法分析

author author     2022-08-08     531

关键词:

实验一、词法分析实验

专业:商业软件工程   姓名:钟菲菲  学号:201506110191

一、        实验目的

 

编制一个词法分析程序

 

二、        实验内容和要求

 

输入:源程序字符串;

输出:二元组(种别,单词符号本身)。

 

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

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

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

2.      原理分析及流程图

主要总体设计问题。

 技术分享

 

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

 

void Analyse(char a[])//词法分析的主要函数

{

    int i=0,j=0,n=0,m=0,temp=0;

    char b[N];//数组b存储数组a中除关键字外的其他字母

    while(a[i]!=‘$‘)//对输入的单词符号进行识别判断是否为关键字或标志符,若是则输出单词本身及其词法规则和种别码

    {

         if(a[i]>=65&&a[i]<=122)//判断每一个单词符号是否为字母

        {

            j=0;

            while((a[i]>=65&&a[i]<=122)||(a[i]>=‘0‘&&a[i]<=‘9‘)||a[i]==‘_‘)

            {

                b[j]=a[i];

                j++;

                i++;

            }

            i--;

            b[j]=‘\0‘;

            for(n=0;n<6;n++)

            {

                if(strcmp(b,word[n])==0)

                {

                                printf("<关键字,%d,",n+1);

                                while(word[n][m]!=‘\0‘)

                                {

                                       printf("%c",word[n][m]);

                                       m++;

                                }

                                printf(">\n");

                                temp=1;

                }

                  }

                  if(temp==0)

                         printf("<标识符,10,%s>\n",b);

 

         }

         else

         {

            switch(a[i])//用switch结构实现对界符和运算符的识别和其词法规则和种别码的输出

            {

                  case ‘#‘: printf("<0,$>\n");

            case ‘+‘: printf("<运算符,13,+>\n");break;

            case ‘-‘: printf("<运算符,14,->\n");break;

            case ‘*‘: printf("<运算符,15,*>\n");break;

            case ‘/‘: printf("<运算符,16,/>\n");break;

            case ‘:‘:if(a[i+1]==‘=‘)

                     {

                         printf("<运算符,18,:=>\n");

                         i++;

                     }

                else printf("<界符,17,:>\n");

                break;

            case ‘<‘: if(a[i+1]==‘=‘)

                     {

                         printf("<运算符,21,<=>\n");

                         i++;

                     }

                else if(a[i+1]==‘>‘)

                {

                    printf("<运算符,22,<>>\n");

                    i++;

                }

                else printf("<界符,20,<>\n");

                break;

            case ‘>‘: if(a[i+1]==‘=‘)

                     {

                         printf("<运算符,24,>=>\n");

                         i++;

                     }

                else printf("<界符,23,>>\n");

                break;

            case ‘=‘: printf("<运算符,25,=>\n");break;

            case ‘;‘: printf("<界符,26,;>\n");break;

            case ‘(‘: printf("<界符,27,(>\n");break;

            case ‘)‘: printf("<界符,28,)>\n");break;

            case‘ ‘: break;

            case‘\n‘: break;

            default:

                if(a[i]>=‘0‘&&a[i]<=‘9‘)   

                    printf("<数字,%c>\n",a[i]);

                else

                    printf("‘%c‘输入错误!\n",a[i]);//若输入的单词符号为其他,则输出“输入错误”

                    break;

            }

         }

         i++;

    }

 

}

4.      运行结果及分析

 技术分享

分析:输入关键字、运算符、界符时,输出其词法规则、单词符号本身以及其种别码,输入数字时,输出其词法规则以及数字本身。

技术分享

分析:输入的abcd不能够有所输出。

技术分享

分析:由于没有输入关键字,输入标识符后能够输出了。当输入空格时提示输出错误。

 

四、        实验总结

 

主要问题:若同时输入关键字和标识符,输出结果只显示关键字,只有当不输入关键字时输入标识符,才能输出标识符的单词符号。自己的程序还存在很大的不足,试着用很多想法改进了,还是没有完善。今后会再接再厉,有不懂的地方多提问。

 

词法分析实验报告

实验一:词法分析专业:商业软件工程  姓名:陈锐 学号:201506110103一、       实验目的     编制一个词法分析程序。二、       实验内容和要求1.... 查看详情

实验报告一词法分析程序

实验一、词法分析程序实验专业:商业软件工程  姓名:卓润峰 学号:201506110202一、       实验目的编制一个词法分析程序。二、       实验内容和要求1.输入:源程... 查看详情

实验一词法分析实验报告

一、        实验目的(1)   理解词法分析在编译程序中的作用。(2)   加深对有穷自动机模型的理解。(3)   掌握词法分析程序的实现方法。(4)   ... 查看详情

203-陈冠权-词法分析实验报告

实验一、词法分析实验专业:商业软件工程3班  姓名:陈冠权 学号:201506110203一、实验目的  通过设计编译程序完成一个词法分析器,加深对词法分析的理解。二、实验内容和要求输入一连串的字符,即保留字、... 查看详情

实验报告一词法分析程序

实验一、词法分析程序实验专业计算机科学与技术  姓名谢建航 学号201506110209一、       实验目的 1.编制一个词法分析程序。 二、       实验内容和要求输入... 查看详情

实验一词法分析试验报告

实验一、词法分析实验专业:商业软件工程  姓名:林海鑫 学号:201506110120一、       实验目的(1)掌握词法分析程序的实现方法。(2)用C语言对一个简单语言的子集编制一个一遍扫锚的编... 查看详情

词法分析实验报告-201506110151-董广枢

实验一、词法分析专业:商业软件工程二班  姓名董广枢学号201506110151一、       实验目的   编制一个词法分析程序 二、       实验内容和要求1、输入:... 查看详情

词法分析实验报告

实验一、词法分析实验1502商业软件工程专业黄浩峰 姓名 201506110142学号一、 实验目的      通过实验了解词法分析器的词法分析过程。 二、 实验内容和要求设计一个词法分析程序,对关... 查看详情

词法分析实验报告

词法分析实验报告一、        实验目的编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节。  二、        实验内容... 查看详情

实验1词法分析

...字体,字号和行距。报告提交和打印输出时请去掉此框。实验一、词法分析实验商软1班  周展鹏 201506110114一、       实验目的     通过设计一个词法分析程序,对词法进行... 查看详情

实验报告-词法分析

---恢复内容开始---实验一、词法分析实验专业:商软二班  姓名:黄思慧 学号:201506110189一、       实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握... 查看详情

词法分析实验报告

 实验一、词法分析实验专业商业软件工程 姓名黄施策 学号201506110228一、       实验目的    编制一个词法分析程序。二、       实验内容和要求 &nb... 查看详情

词法分析实验报告

实验一、词法分析实验商务软件工程三班  吴文成 201506110217一、       实验目的调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能... 查看详情

词法分析实验报告

实验一、词法分析实验专业:商业软件工程 姓名:程嘉明 学号:201506110185一、 实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方... 查看详情

词法分析实验报告

实验一、词法分析实验专业:商业软件工程  姓名: 陈 瑾学号:201506110101一、       实验目的     编制一个词法分析程序 二、        查看详情

词法分析实验报告

...,字号和行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验专业:商业软件工程  姓名:陈蔓嘉 学号:201506110245一、       实验目的     编制一个词法分... 查看详情

词法分析实验报告

实验一、词法分析实验商业软件工程 符致伟 201506110157一、       实验目的 编制一个词法分析程序二、       实验内容和要求 输入:源程序字符串 输出:二元... 查看详情

词法分析实验报告

...,字号和行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验  商软二班张智恒201506110172一、       实验目的     编制一个词法分析程序 二、    查看详情