编译原理 $2 语法分析

本文详细介绍了编译器中的语法分析过程,包括语法分析的作用、方法、文法概念、自顶向下和自底向上的分析策略,以及错误处理机制。重点讲解了文法的类型、正则文法、消除二义性、LL(1)和LR语法分析,以及自动机生成技术。
摘要由CSDN通过智能技术生成

§2 语法分析

C1 语法分析

1)作用:接受词法单元流,检查是否符合文法,翻译出中间代码

2)语法分析方法:自底向上与自顶向下

3)语法错误处理:

  • 错误:词法错误、语法错误、语义错误、逻辑错误
  • 恢复:
    • Panic模式:依次丢弃输入中的符号,直至找到同步语法单元。同步语法单元通常为界限符,如; {}等,作用清晰无二义。Panic模式简单,不会进入死循环,但往往跳过大量输入
    • 短语层次恢复:纠正输入,如替换,;,补充;。难以检测实际错误在检测位置之前的情况
    • 错误产生式:预测可能的常见错误,在文法中加入特殊产生式
    • 全局纠正:理想情况下通过最小改动纠正错误

C2 文法

1)上下文无关文法

  • 终结符号:组成串的基本符号,是词法单元名。通常使用黑体字符串,小写字母,运算符,标点表示
  • 非终结符号:表示串的集合,定义语言以及语言层次结构。通常使用大写字母,小写斜体,希腊字母表示
  • 开始符号:特殊非终结符号,定义文法的全部语言。通常使用S表示
  • 产生式:产生式头(非终结)->产生式体。开始符号的产生式放在最前面。可使用|连接多个产生式

2)推导:展开串,如 A → γ , α A β    ⟹    α γ β A\to\gamma,\alpha A\beta\implies\alpha\gamma\beta Aγ,αAβαγβ

  • KaTeX parse error: Got function '\mskip' with no arguments as argument to '\overset' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax:零或多步推导出;    ⟹    \implies :一步推导出;KaTeX parse error: Got function '\mskip' with no arguments as argument to '\overset' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax:一步或多步推导出

  • KaTeX parse error: Got function '\mskip' with no arguments as argument to '\underset' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax:最左推导,替换最左非终结符;KaTeX parse error: Got function '\mskip' with no arguments as argument to '\underset' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax:最右推导

  • 若文法G开始符号KaTeX parse error: Got function '\mskip' with no arguments as argument to '\overset' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax,则 α \alpha α称G的一个(最左/最右)句型;若 α \alpha α不含非终结符,则称句子
    语言是句子的全集,若两个文法生成相同语言,称文法等价

    验证文法生成语言:先验证文法生成的串在语言中,再验证语言中的串可由文法生成

  • 语法分析树的叶节点序列构成一个句型,称其结果/边缘

    推导对应于为语法分析树的非终止符叶节点按其产生式添加子树

3)正则文法:上下文无关文法的真子集

  • 正则文法可由NFA生成:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值