表驱动LL(1)分析程序过程详解

  • 表驱动LL(1)分析程序由预测分析程序、先进后出栈和预测程序表3个部分组成,其中只有预测分析表与文法有关,而分析表又可用一个矩阵M表示。矩阵的元素M[A,a]中的下标A表示非终结符,a为终结符或句子括号#,矩阵元素M[A,a]中的内容是一条关于A的产生式,表明当用非终结字符A向下推导时,面令输入符a时所采取的候选产生式。当元素内容无产生式时,则表明A为左部向下推导时遇到了不该出现的符号,因此元素内容转向出错处理的信息。
    在这里插入图片描述

    • ‘#’是句子括号,即输入串的括号
    • ‘S’是文法的开始符号
    • ‘X’是存放当前栈顶符号的工作单位
    • ‘'a’是存放当前输入括号a的工作单位
  • 举例说明
    下面的正则文法是符合LL(1)规则的,如何将非LL(1)文法转换为LL(1)文法请查看相关资料。


    在这里插入图片描述

    表达式文法预测分析表
  • 表达式恩法的预测分析表

  • 对符号串i+i*i#d的分析过程

    在这里插入图片描述

  • 详细讲解每一步:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Leader_wang/article/details/82822944