词法分析实验报告

实验一、词法分析实验

专业:商业软件工程   姓名:程嘉明  学号:201506110185

一、 实验目的

通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方法。

 

 

二、 实验内容和要求

      <程序>PROGRAM <标识符>;<分程序>.

<分程序><变量说明>BEGIN<语句表>END

<变量说明>VAR<变量表><类型>| <>

<变量表><变量表><变量> | <变量>

<类型>INTEGER

<语句表><语句表><语句> | <语句>

<语句><赋值语句> | <条件语句> | <WHILE语句> | <复合语句> | <过程定义>

<赋值语句><变量>=<算术表达式>

<条件语句>IF<关系表达式>THEN<语句>ELSE<语句>

<WHILE语句>WHILE<关系表达式>DO<语句>

<复合语句>BEGIN<语句表>END

<过程定义>PROCEDURE<标识符><参数表>

BEGIN<语句表>END

设计并实现一个包含预处理功能的词法分析程序,加深对编译中词法分析过程的理解。

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

 

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

可执行程序名:×××.exe

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define Max 1000

int j=1;

long g=0;

char nchar[Max]={""}; 

int k=0;

char ch=NULL;

char m[30]={""};

int sym=-1;

main()

{

    char zfc;

    int n;

    printf("请输入一串字符串:");

    while((zfc=getchar())!='$')

    {

        nchar[g]=zfc;

        g++;

    } 

    do

    {

        n=getsym();

    }while(n); 

}

int getsym()

{

    int i;

    char a[2]={""};

    char word[][15]={"begin","do","end","if","then","while"};

    int wsym[6]={1,2,3,4,5,6};

    int ssym[9]={25,26,27,28,0,13,14,15,16};

    char b[9]={'=',';','(',')','#','+','-','*','/'};

    if(j==1&&k<g)

    {

        ch=nchar[k];

        j++;

        k++;

    }

    while(ch==' '||ch==10||ch==9||ch==13)

    {

        if(k==g)

        {

            return 0;

        }

        ch=nchar[k];

        k++;

    }

 

  1. 原理分析及流程图

 

 

 

  1. 主要总体设计问题。

(包括存储结构,主要算法,关键函数的实现等)

 

有很多地方的逻辑还是不能够明白不懂得如何下手,

 

 

 

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

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

 

 

 

  1. 运行结果及分析

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

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

 

 

 

 

 

 

 

四、 实验总结

对词法分析还是比较生疏不熟练,很多时候无从下手,需要多多练习,理解一下书本的内容,看看别人项目的实现过程

posted on 2016-10-14 22:15  185程嘉明  阅读(243)  评论(1编辑  收藏  举报