zoukankan      html  css  js  c++  java
  • 实验三、 递归下降分析程序实验

    一、        实验目的

        练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力

    二、        实验内容和要求

    对于给定的文法G[E]
                  E->TE’
                 E’->+TE’ | ε
                T->FT’
                T’->*F T’| ε
                F->(E) | i
         采用递归下降语法分析法编写语法分析程序,该语法分析程序判断输入的字符串是否符合上述文法,并能够输出相应的结果(是语法成分或不是语法成分)。
    三、        实验方法、步骤及结果测试
    1.      源程序名:递归下降语法分析程序设计.c
     2.      原理分析及流程图
     
    用字符串数组存储输入的字符串,再由相应的文法函数判定是否符合文法
    #include<stdio.h>
    
    #include<string.h>
    char str[10];
    int index=0;
    void E();            //E->TX;
    void X();            //X->+TX | e
    void T();            //T->FY
    void Y();            //Y->*FY | e
    void F();            //F->(E) | i
    int main()
    {
        int len;
        int m;
        printf("请输入要测试的次数:");
        scanf("%d",&m);
        while(m--)
        {
            printf("请输入算数表达式:");
            scanf("%s",str);
            len=strlen(str);
            str[len]='#';
            str[len+1]='';
            E();
            printf("正确语句!
    ");
            strcpy(str,"");
            index=0;
        }
        return 0;
    }
    void E()
    {
        T();
        X();
    }
    void X()
    {
        if(str[index]=='+')
        {
            index++;
            T();
            X();
        }
    }
    void T()
    {
        F();
        Y();
    }
    void Y()
    {
        if(str[index]=='*')
        {
            index++;
            F();
            Y();
        }
    }
    void F()
    {
        if(str[index]=='i')
        {
            index++;
        }
        else if (str[index]=='(')
        {
            index++;
            E();
            if(str[index]==')')
            {
                index++;
            }else{
                printf("
    分析失败!
    ");
                exit (0);
            }
        }
        else{
            printf("分析失败!
    ");
            exit(0);
        }
     }

    运行效果:

     
  • 相关阅读:
    如何搭建PHP本地服务器
    load xml with xls
    t-sql read xlsx
    test js online link
    export to pdf
    silverlight browse information
    ckeditor link
    T-Sql操作Xml数据(转)
    Linq to Xml
    webpack -p压缩打包react报语法错误处理
  • 原文地址:https://www.cnblogs.com/swxvico/p/6188551.html
Copyright © 2011-2022 走看看