编译原理实验LL(1)分析法

LL(1)分析法

     LL(1)分析法又称预测分析法,是一种不带回溯的非递归自上而下分析法。LL(1)的含义是:第一个L表明自上而下分析是从左至右扫描输入串的;第二个L表明分析过程中将用最左推导;“1”表明只需向右查看一个符号就可决定如何推导(即可知用哪个产生式进行推导)。

    LL(1)分析法的基本思想是根据输入串的当前输入符号来惟一确定选用某条规则(产生式)来进行推导;当这个输入符号与推导的第一个符号相同时,再取输入串的下一个符号,继续确定下一个推导应选的规则;如此下去,直到推导出被分析的输入串为止。

    一个LL(1)分析器由一张LL(1)分析表(也称预测分析表)、一个先进后出分析栈和一个控制程序(表驱动程序)组成,如下图所示。

对图所示的LL(1)分析器说明如下:

    (1) 输入串是待分析的符号串,它以界符“#”作为结束标志。(注:#∈VT但不是文法符号,是由分析程序自动添加的。)

    (2) 分析栈中存放分析过程中的文法符号。分析开始时栈底先放入一个“#”,然后再压入文法的开始符号;当分析栈中仅剩“#”,输入串指针也指向串尾的“#”时,分析成功。

    (3) 分析表用一个矩阵(或二维数组)M表示,它概括了相应文法的全部信息。矩阵的每一行与文法的一个非终结符相关联,而每一列与文法的一个终结符或界符“#”相关联。对M[A,a]来说,A为非终结符,而a为终结符或“#”。分析表元素M[A,a]中的内容为一条关于A的产生式,表明当A面临输入符号a时当前推导所应采用的候选式;当元素内容为空白(空白表示“出错标志”)时,则表明A不应该面临这个输入符号a,即输入串含有语法错误。

 

         图   LL(1)分析器

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小晴晴呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值