zoukankan      html  css  js  c++  java
  • 编译原理-递归下降分析法 c程序部分的分析

    实验三 语法分析程序实验

    专业 商软2班   姓名 黄仲浩  学号 201506110166

    一、 实验目的

         编制一个部分文法分析程序。

    二、 实验内容和要求

         输入:源程序字符串

         输出:正确或者错误

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

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

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

    1. 原理分析及流程图

        

    #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 :
    ");
      do
        {
          
          scanf("%c",&s);i++;
          Token[i]=s;
          
        }while(Token[i]!='#');
     scaner();
     S();
         if(sym=='#')
             printf("Success!
    ");
         else
             printf("fail!
    ");
     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. 主要程序段及其解释:

         S().T().U()//只是分析c语言的部分

         scaner()//进行下一个字符的记录

         error()//结束的标志

    1. 运行结果及分析

     

    四、 实验总结

    此程序只是以部分为主做出来,是为了慢慢地做好全部c语言的分析。我会慢慢以此思考LL(1)文法来进行最终的文法改写分析。

     

     

  • 相关阅读:
    用Docker执行Percona Server
    Java基础 笔记(七)
    VC与JavaScript交互(三) ———— JS调用C++
    4456: [Zjoi2016]旅行者|分治+最短路
    Swift语法学习之 方法
    JavaScript学习笔记二
    Latex 制作积分规则表格
    向MapReduce转换:计算共现关系
    王立平--switch case
    组队训练1 回放
  • 原文地址:https://www.cnblogs.com/qazwsx833/p/6187224.html
Copyright © 2011-2022 走看看