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


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

    专业 软件工程   姓名 麦振澎 学号 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);
        }
    }

    运行截图:

  • 相关阅读:
    Chrome在解析html时的一个bug
    WebGL笔记(二):顶点着色
    跟据一段代码浅谈Javascript闭包
    [标量函数] Html标记过滤 HtmlFilter
    A new weblog from Contribute CS4
    WebGL笔记(一):起步
    MSSQL查询连接数
    DDD中的分层
    非root用户使用docker方法
    七牛跨服务器上传文件带参数
  • 原文地址:https://www.cnblogs.com/www924121851/p/6188436.html
Copyright © 2020-2023  润新知