zoukankan      html  css  js  c++  java
  • 第十一次作业 ——LL(1)文法的判断,递归下降分析程序

    1. 文法 G(S):

    (1)S -> AB

    (2)A ->Da|ε

    (3)B -> cC

    (4)C -> aADC |ε

    (5)D -> b|ε

    验证文法 G(S)是不是 LL(1)文法?

     

    2.文法消除左递归之后的表达式文法是否是LL(1)文法?

     文法:

    E→TE'

    E'→+TE'|ε

    T→FT'

    T'→*FT'|ε

    F→(E)|i

     

    3.接2,如果是LL(1)文法,写出它的递归下降语法分析程序代码。

    E()

        {T();

           E'();

         }

    E'()

    T()

    T'()

    F()

    void ParseE(){
    
      ParseT();
    
           ParseE'();
    
         }
    
    void ParseT()  {  
    
      ParseF();
    
      ParseT'();
    
    }
    
    void ParseE'()  {
    
      switch(lookahead):
    
        case +:
    
          MatchToken(+);
    
          ParseT();
    
          ParseE'();
    
          break;
    
        case #:
    
          break;
    
        case ):
    
          break;
    
        default:
    
          printf('synax error!
    ');
    
          exit(0);
    
    }
    
     
    
    void ParseF()  { 
    
      switch(lookahead):
    
        case (:
    
          MatchToken(();
    
          ParseE();
          MatchToken());
    
          break;
    
        case i:
    
          MatchToken(i);
    
          break;
    
        default:
    
          printf('synax error!
    ');
    
          exit(0);
    
    }
    
     
    
    void ParseT'()
    
    {
    
      switch(lookahead):
    
        case *:
    
          ParseF();
    
          MatchToken(*);
    
          ParseT'();
    
          break;
    
        case #:
    
          break;
    
        case ):
    
          break;
    
        case +:
    
          break;
    
        default:
    
          printf('synax error!
    ');
    
          exit(0);
    
    }

     4.加上实验一的词法分析程序,形成可运行的语法分析程序,分析任意输入的符号串是不是合法的表达式。

  • 相关阅读:
    如何把本地项目上传到Github
    Git使用详细教程
    PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件” 
    delete
    CentOS7 vs centos6
    CentOS 七 vs CentOS 6的不同
    内网端口转发方法汇总
    推荐给开发人员的6个实用命令行工具
    从大公司离职去小公司当 CTO 是一种怎样的体验?
    如果要做点对点的视频传输应该一般使用什么协议
  • 原文地址:https://www.cnblogs.com/lcj170/p/11907561.html
Copyright © 2011-2022 走看看