实验三 递归下降分析程序

实验三递归下降分析程序实验

专业 商软2班   姓名 邝启彬  学号 201506110165

一、        实验目的

     编制一个递归下降分析程序。

 

二、        实验内容和要求

     输入:正规式

输出:判断该正规式是否正确。

 

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

  1. 1.      源程序名:递归下降分析程序.c

可执行程序名:递归下降分析程序.exe

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

 

  1. 3.      主要程序段及其解释:
#include<stdio.h>

#include<string.h>

char Token[30];//存储输入的字符

char sym;//记录下一个字符

char s;//输入字符的传递

static int p=0 ;//下一个字符的下标

void S();

void T();

void U();

void scaner();//下一个字符

void error();//错误结束

//以此文法为基础作此程序

//S->a|^|(T)

//T->SU

//U->,SU|$

int main()

{

    int i=-1;

    printf("Please input :\n");

  do

    {

     

      scanf("%c",&s);i++;

      Token[i]=s;

     

    }while(Token[i]!='#');

 scaner();

 S();

     if(sym=='#')

         printf("Success!\n");

     else

         printf("fail!\n");

 return 0 ;

 

}

void scaner()

{

    sym=Token[p];

    p++;

}

void error()

{

    printf("error!");

}

void S()

{

  if(sym=='a'||sym=='^')//如果是a或者是^

      scaner();

  else if(sym=='(')

  {

      scaner();

      T();

      if(sym==')')

          scaner();

      else

          error();

  }

}

void T()

{

  S();

  U();

}

void U()

{

  if(sym==',')

  {

    scaner();

    S();

    U();

  }

  else if(sym!=')')

      error();

}

 

 

  1. 4.      运行结果及分析

                       

四、        实验总结

通过这个递归下降分析程序,使我懂得了编译器在编译时候的过程。虽然我做出来了这个程序,但是C语言文法的递归下降分析程序有点难度,需要我在以后的时间去慢慢完成。我会在接下来的时间里慢慢去完成C语言文法的递归下降分析程序的。

 

 

 

 

 

 

 

 

posted @ 2016-12-16 19:45  165邝启彬  阅读(343)  评论(0编辑  收藏  举报