zoukankan      html  css  js  c++  java
  • 递归下降分析法

    实验三 递归下降分析法

     

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

    专业 商软2班   姓名 李文辉  学号 201506110168

    一、        实验目的

         编制一个使用递归下降分析法实现的语法分析程序。

    二、        实验内容和要求

         输入:正规式

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

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

    1. 1.      源程序名:168-李文辉.c

    可执行程序名:168李文辉.exe

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

     

    1. 3.      主要程序段:
    复制代码
     1 #include<stdio.h>
     2 #include<string.h>
     3 char Token[30];//存储输入的字符
     4 char sym;//记录下一个字符
     5 char s;//输入字符的传递
     6 static int p=0 ;//下一个字符的下标
     7 void S();
     8 void T();
     9 void U();
    10 void scaner();//下一个字符
    11 void error();//错误结束
    12 main()
    13 {    
    14     int i=-1;    
    15     printf("Please input :
    ");    
    16     do    
    17     {        
    18         scanf("%c",&s);i++;
    19         
    20         Token[i]=s;
    21     }while(Token[i]!='#');
    22     scaner();    
    23     S();    
    24     if(sym=='#')        
    25         printf("Success!
    ");    
    26     else        
    27         printf("fail!
    ");
    28 }
    29 
    30 void scaner()
    31 {    
    32     sym=Token[p];    
    33     p++;    
    34 }
    35 void error()
    36 {    
    37     printf("error!");    
    38 }
    39 void S()
    40 {    
    41     if(sym=='a'||sym=='^')//如果是a或者是^        
    42         scaner();    
    43     else if(sym=='(')        
    44     {        
    45         scaner();        
    46         T();        
    47         if(sym==')')            
    48             scaner();        
    49         else            
    50             error();
    51     }    
    52 }
    53 void T()
    54 {    
    55     S();    
    56     U();    
    57 }
    58 
    59 void U()
    60 {    
    61     if(sym==',')        
    62     {        
    63         scaner();        
    64         S();        
    65         U();        
    66     }
    67     else if(sym!=')')        
    68         error();    
    69 }
    复制代码
    1. 4.      运行结果及分析

                           

    四、        实验总结

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

  • 相关阅读:
    根据label字数计算UILable高度
    使用brew安装软件
    NSSearchPathDomainMask 详解
    Swift 使用代理和闭包(closure)反向传值
    Swift 闭包(closure)
    Swift 协议和委托(代理)
    Swift 2.0 : 'enumerate' is unavailable: call the 'enumerate()' method on the sequence
    cocoapods安装以及使用,安装过程中ruby版本过低
    Mac环境下svn的使用
    静态库和动态库详解
  • 原文地址:https://www.cnblogs.com/168-hui/p/6212156.html
Copyright © 2011-2022 走看看