平生不会相思,才会相思,便害相思|

Graffiti404

园龄:2年4个月粉丝:0关注:0

2024-05-31 21:59阅读: 28评论: 0推荐: 0

编译原理(清华大学版)第四、六章

重点:

掌握递归下降LL(1)分析法和表驱动LL(1)分析法

  • 语法分析是编译程序的核心。作用是识别由此法分析给出的单词符号串是否是给定文法的正确句子,即是否可以通过语法树得到
  1. 语法分析程序的输入

​ Token(单词)序列:词法分析产生的输出,是各个单词都正确的源程序,是一个有限序列

  1. 语法分析程序的功能

​ 根据文法的规则构造与Token序列相匹配的语法树或说寻找与Token序列相匹配的推导或归约。

  1. 语法分析程序的输出

​ 语法树或某种表示

​ 符号表管理信息:查找

​ 错误处理信息:定位、报错、恢复、继续编译

自顶向下的语法分析方法

确定的自顶向下分析思想

关键

  • 首先要解决从文法的识别符号出发,如何根据当前的输入符号(面对的单词)唯一地确定选用哪条规则替换相应非终结符以便往下推导

一些非常重要的概念

  1. 首符号集合(FIRST集)定义

G=(VT,VN,P,S)​是上下文无关文法(2型文法)

FIRST(α)={a|αaβ,aVT,βV}

  1. 后跟符号集合(FOLLOW集)定义

FOLLOW(A)={a|SμAβaVT,aFIRST(β),μVT,βV+}

或者 FOLLOW(A)={a|SAa,aVT}


如何解决自顶向下分析的关键问题,即判断是否为确定的自定向下分析,引入SELECT

产生式的选择符号集(SELECT集)定义

  • 给定上下文无关文法的产生式Aα,AVN,αV
    • αϵ,则SELECT(Aα)=FIRST(α)
    • αϵ,则SELECT(Aα)=(FIRST(α){ϵ})FOLLOW(A)

一个上下文无关文法是LL(1)文法的充分必要条件

  • 每一个非终结符A的两个不同产生式,AαAβ,满足

    SELECT(Aα)SELECT(Aβ)=

    其中αβ不能同时ϵ

LL(1)文法

  • LL(1)文法的含义是:

    • 第一个L表明自顶向下分析是从左向右扫描输入串

    • 第二个L表明分析过程总用最左推导;

    • 1表明只需向后看一个符号就可决定如何推导,即选择哪个产生式(规则)进行推导。

本文作者:Graffiti404

本文链接:https://www.cnblogs.com/graffiticode/p/18225342

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Graffiti404  阅读(28)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起