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

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

    专业 软件工程   姓名 麦振澎 学号 201506110162

    一、        实验目的

     

            通过设计,编制,调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构的分析。

            

    二、        实验内容和要求      

         输入:源程序字符串

         输出:正确或者错误

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

         

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

          2.      原理分析及流程图

           这里的存储结构主要是用数组来存储字符串。

           采用递归子程序方法进行语法分析,对文法中的每个非终结符号按其产生式结构产生相应的语法分析子程序,完成相应的识别任务。本程序是以算术表达式的识别为例。鉴定语法是否合法。

    代码如下:

    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    char s[10];   
    int x=0;
    void A();          
    void B();           
    void C();          
    void D(); 
    void E();
     
    int main()
    {
        int len;
        printf("请输入算术表达式:(以#为结束)
    ");
        scanf("%s",s);
        len=strlen(s);
        s[len]='#';
        s[len+1]='';
        A();
        printf("True!
    ");
        strcpy(s,"");
        x=0;
        return 0;
    }
     
    void A()
    {
        C();
        B();
    }
     
    void B()
    {
        if(s[x]=='+'||s[x]=='-')
        {
            x++;
            C();
            B();
        } 
    }
     
    void C()
    {
        E();
        D();
    }
     
    void D()
    {
        if(s[x]=='*'||s[x]=='/')
        {
            x++;
            E();
            D();
        }
    }
     
    void E()
    {
        if(s[x]>='a'&&s[x]<='z')
        {
            x++;
        }
        else if(s[x]>=0&&s[x]<=9)
        {
            x++;
        }
        else if (s[x]=='(')
        {     
            x++;
            A();
            if(s[x]==')')
            {
                x++; 
            }
            else
            {
                printf("Error!
    ");
                exit(0);
            }
        } 
        else
        {
            printf("Error!
    "); 
            exit(0);
        }
    }

    运行截图:

  • 相关阅读:
    co模块总结
    Promise总结
    webpack错误Chunk.entry was removed. Use hasRuntime()
    jquery validate用法总结
    node命令行开发
    animation总结
    formData使用总结
    vue-resource发送multipart/form-data数据
    keil中使用Astyle格式化你的代码的方法-keil4 keil5通用
    tcpip入门的网络教程汇总
  • 原文地址:https://www.cnblogs.com/www924121851/p/6188436.html
Copyright © 2011-2022 走看看