词法分析实验报告1

author author     2022-08-08     317

关键词:

实验一、词法分析实验

商软二班 张智恒 201506110172

一、        实验目的

 

     编制一个词法分析程序

 

二、        实验内容和要求

编写一个词法分析程序,使其能够识别对应的单词符号,并以(单词符号        种别码)的形式输出。

 

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

 

  1. 1.      源程序名:压缩包文件(rarzip)中源程序名 zzh.c

可执行程序名:zzh.exe

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

# include<stdio.h>

# include<stdlib.h>

# include<string.h>

 

int panduan(char tmp[])

{

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

    int k = 0;

 

    while(k < 6)                 // 临时变量tmp 与 字符串b[k] 进行比较

    {

        if(strcmp(tmp, b[k]) == 0)

        {

            printf("<%s, %d>\n", tmp, k+1);

            return 0;

        }

        k++;

    }

    printf("<%s, 10>\n", tmp);

 

    return 0;

}

 

void cifafenxi(char a[])

{

    int i = 0, j = 0;

    char tmp[10];

    int flag = 0;

 

    while(a[i] != ‘\0‘)

    {

        if(a[i] >= ‘a‘ && a[i] <= ‘z‘)        // 判断标识符

        {

            tmp[j] = a[i];

            j++;

            while((a[i+1] >= ‘a‘ && a[i+1] <= ‘z‘) || (a[i+1] >= ‘0‘ && a[i+1] <= ‘9‘))

            {

                i++;

                tmp[j] = a[i];

                j++;

            }

            tmp[j] = ‘\0‘;

            j = panduan(tmp);

        }

 

        if(a[i] >= ‘0‘ && a[i] <= ‘9‘)        // 判断数字

        {

            tmp[j] = a[i];            

            j++;

            while(a[i+1] >= ‘0‘ && a[i+1] <= ‘9‘)

            {

                i++;

                tmp[j] = a[i];

                j++;

            }

            tmp[j] = ‘\0‘;

            printf("<%s, 11>\n", tmp);

            j = 0;

        }

 

        switch(a[i])        // 判断符号

        {

        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");

                else

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

            }break;

        case ‘<‘:

            {

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

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

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

                    printf("<<>, 22>\n");

                else

                    printf("<<, 20>\n");

            }break;

        case ‘>‘:

            {

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

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

                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 ‘#‘:printf("<#, 0>\n");break;

        }

    

        i++;

    }

}

 

int main(void)

{

    char a[300];

 

    printf("input : ");

    gets(a);

    cifafenxi(a);

 

    return 0;

}

  1. 3.      运行结果及分析

一般必须配运行结果截图,结果是否符合预期及其分析。

   (截图需根据实际,截取有代表性的测试例子)

 

 

 技术分享

 

 

 

 

 

四、        实验总结

 

1.很有难度,在机房里憋了几个小时,还是搞不定,主要是在数字那一块数字方面该程序是没有负数的,很多地方其实也都不算完美通过与同学的交流,掌握了主要方法后发现其原理十分简单,把每一种类型都分开出来特殊处理就可以了

词法分析是编译的第一个阶段,它的主要任务是从左至右逐个字符地对源程序进行扫描,

初次做词法分析时无从下手,后经过看书查资料对其慢慢理解, 勉强是做出了一个不太好的成品 ,

对于编译程序的学习,我会更加用心的,毕竟我觉得确实有难度,但它确实很有用,比如编译程序

的结构要如何简洁清晰条理化,编译程序的效率等等的实际问题

 

 

 

 

 

 

 

 

 

 

词法分析实验报告

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

实验报告一词法分析程序

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

实验一词法分析实验报告

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

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一、       实验目的     编制一个词法分析程序 二、    查看详情