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

    作业十一——LL(1)文法的判断,递归下降分析程序

    判断是否为LL(1)文法

    选取有多个产生式的求select,只有一条产生式的无需求select

    同一个非终结符之间求交集,全部判断为空后则为LL(1)文法

    求FIRST集

    是每条产生式右边所出现的首个终结符的集合

    求FOLLOW集

    是针对非终结符,找到产生式右边跟在非终结符后的终结符,#为输入串的结束符

    求SELECT集

    当产生式不推导出ε时,就为FIRST 当产生式推到出ε时,就为(FIRST(A->ε)-{ε})∪FOLLOW{A}

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

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

    E() {
    	T();
    	E'();
    }
    E'(){ 
    		if('+') {
    			matchtoken(+);
    			T();
    			E();
    		} else if (')','#') {
    		}//为空串时
    		else {
    			errot;
    			exit(0);
    		}//错误提示
    	}
    
    T() {
    		F();
    		T'();
    	}
    
    T'() {
    		if('*') {
    				matchtoken(*);
    				F();
    				T'();
    			}
    		else if ('+',')','#')
    			{}//为空串时
    		else{
    				errot;exit(0);
    			}//错误提示
    			}
    F(){
    		if('('){
    			E();
    			if(')'){
    			        }
    			else{
    				errot;exit(0);
    			}//错误提示
    			}
    		else if('i'){  
    		     matchtoken(i);  
    		}
    		else{
    				errot;exit(0);
    			}//错误提示
    			}
    

      

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

  • 相关阅读:
    108.异常的传递
    107.捕获异常
    106.异常、模块(异常介绍)
    105.面向对象案例-烤红薯
    104.多态案例
    103.继承案例二
    102.继承案例一
    101.自定义玩家类
    100.自定义枪类
    python基础入门之十四 —— 文件操作
  • 原文地址:https://www.cnblogs.com/cyxxixi/p/11907056.html
Copyright © 2011-2022 走看看