词法分析实验报告

author author     2022-08-08     645

关键词:

格式说明:排版时注意按此模板的字体,字号和行距。

报告提交和打印输出时请去掉此框。

 

实验一、词法分析实验

   商软二班 张智恒 201506110172

一、        实验目的

 

     编制一个词法分析程序

 

二、        实验内容和要求

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

 

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

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

可执行程序名:zzh.exe

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;

}

3.      运行结果及分析

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

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

 

 

 技术分享

 

 

 

 

 

四、        实验总结

 

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

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

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

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

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

 

 

 

 

 

 

 

 

 

 

实验报告-词法分析

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

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告1

实验一、词法分析实验商软二班张智恒201506110172一、       实验目的     编制一个词法分析程序 二、       实验内容和要求编写一个词法分析程序,使其能... 查看详情

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告

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

词法分析实验报告

 实验一、词法分析器实验专业:商软工程3班  姓名:林美全 学号:201506110220一、       实验目的设计,编制一个简单词法分析程序对输入字符串进行识别并做简单有效输出从而加深对词... 查看详情

实验一词法分析实验报告

实验一、词法分析实验专业:商业软件工程2班 姓名别博文 学号201606110175一、 实验目的      编制一个词法分析程序。 二、 实验内容和要求     对字符串表示的源程序... 查看详情

词法分析实验报告

实验一、词法分析实验专业商业软件3班 姓名林鑫杰学号201506110211一、       实验目的 编制一个词法分析程序。 二、       实验内容和要求输入:源程序字符串输出... 查看详情

实验报告1—’词法分析

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

词法分析实验报告

实验一、词法分析程序实验专业:商业软件  姓名:杨链新 学号:201506110113一、       实验目的 通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解... 查看详情

词法分析程序实验报告

实验一词法分析实验商业软件工程2班 黄铭坤 201506110147一、        实验目的      编制一个词法分析程序。二、        实验内容和 查看详情

词法分析-实验报告

...    实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、      实验内... 查看详情

词法分析程序实验报告

实验一、词法分析实验专业:商业软件工程  姓名王芷玲 学号201606110246一、 实验目的      编制一个词法分析程序。 二、 实验内容和要求     对字符串表示的源程序... 查看详情