编译原理——语法分析

这篇具有很好参考价值的文章主要介绍了编译原理——语法分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接请访问https://code-child.cn

自顶向下的分析

image.png

最左推导

image.png
lm表示的是最左

最右推导

image.png

自顶向下的语法分析采用最左推导方式

image.png

例子

image.png

自顶向下语法分析的通用形式

image.png

预测分析

image.png

文法转换

两个问题

image.png
image.png

消除直接左递归

image.png

消除直接左递归的一般形式

image.png

消除间接左递归

image.png

提取左公因子

image.png

LL(1)文法

S_文法

image.png

例子

image.png

非终结符的后继符号集follow

image.png

产生式的可选集select

image.png

串首终结符集first

image.png

比如求x的first集合,那么就是求的x—>字符串,所有字符串首字母构成的集合

LL(1)文法定义

image.png

first集和follow集的计算

计算文法符号x的first(x)

image.png
image.png

计算串X1X2……Xn的first集合

image.png

计算非终结符A的follow(A)

image.png
计算需要反复
算法
image.png

例:表达式文法各产生式的select集

image.png

预测分析表

image.png

image.png

递归的预测分析法

image.png

非递归的预测分析法

image.png

image.png

image.png

两种方法进行对比

image.png

预测分析法实现步骤

image.png

预测分析中的错误处理

预测分析中的错误检测

image.png

预测分析中的错误恢复

image.png
例子:
image.png
M表示预测分析表,A表示栈顶的非终结符,a表示当前输入符号。
image.png

自底向上的语法分析(考试不考)

image.png

image.png
image.png

移入-归约分析的工作过程

image.png

移入-归约分析器可采取的4种动作

image.png

移入-归约分析中的关键问题

image.png

分析完了之后,栈中没有推出起始符S

image.png

LR分析法

image.png

LR分析法的基本原理

image.png
image.png

LR分析表的结构

image.png
例子:
image.png

LR分析器的工作过程

image.png
image.png

LR分析算法

image.png

LR(0)项目

image.png

增广文法

image.png

文法中的项目

image.png
image.png

S已经归约出来了,就是(1)就是接收项目——看例子记住就行

image.png

例子:LR(0)自动机

image.png

LR(0)分析表构造算法——看不懂,不要看

CLOSURE()函数

image.png
image.png

goto函数

image.png
image.png

构造LR(0)自动机的状态集

image.png

image.png

image.png

LR(0)分析过程中的冲突

image.png
image.png

SLR分析

SLR分析法的基本思想

image.png

例子:

image.png

SLR分析表构造算法

image.png

SLR分析中的冲突

image.png

LR(1)分析法

LR(1)分析法的提出

image.pngimage.png

规范LR(1)项目

image.png

等价LR(1)项目

image.png

例子:LR(1)自动机

image.png

赋值语句文法的LR(1)分析表

image.png

例:LR(1)自动机

image.png
image.png

LALR分析法

LALR分析的基本思想

image.png

例:合并同心项集

image.png
image.png

合并同心项集时产生归约-归约冲突的例子

image.png

合并同心集后,虽然不产生冲动,但是可能会推迟错误的发现

image.png文章来源地址https://www.toymoban.com/news/detail-455516.html

LR分析中的错误处理

到了这里,关于编译原理——语法分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编译原理实验三:预测分析法语法分析器的设计

    ​ 根据文法编制预测分析法语法分析程序,以便对输入的符号串进行语法分析。通过编写预测分析法语法分析程序掌握预测分析法的基本原理、FIRST和FOLLOW集的计算、预测分析表的构造方法以及语法分析法主控程序的设计。 对于给定的上下文无关文法,编程完成以下功能:

    2024年02月05日
    浏览(45)
  • 编译原理——语法分析器(C/C++代码实现)

    编写一个简单的LL(1)语法分析器。(注意:此实验是简化版的LL(1)文法,已给出预测分析表,不需要求FIRST和FOLLOW集,直接根据预测分析表编写程序即可) 根据编译原理理论课中学习的算术表达式文法,以及该文法LL(1)分析表,用C语言编写接受算术表达式为输入的语法

    2023年04月26日
    浏览(37)
  • 编译原理——SLR(1)语法分析器(C/C++代码实现)

    设计、编制、实现并调试SLR(1)语法分析器,加深对语法分析的理解。 根据编译原理理论课中学习的算术表达式文法以及该文法的LR分析表,用C语言编写接受算术表达式为输入的语法分析器,以控制台(或文本文件,也可以结合词法分析器完成)为输入,控制台(或文件)

    2024年02月11日
    浏览(38)
  • 编译原理语法分析器(C/C++)(LR1文法)

            来写语法分析器了,有可能是老师不一样也有可能是学校不一样,我要做的语法分析器复杂一点,额,现在想来也不复杂(可能)。         这一次的实验是要进行语法分析,是要用LL1或者递归下降分析法或LR分析法(LR0、LR1)设计语法分析程序。这次我也是先去百

    2024年02月07日
    浏览(30)
  • 编译原理之LL(1)语法分析实验(附完整C/C++代码与测试)

    先从键盘读入要分析的文法,由程序自动构造FIRST、FOLLOW 集以及SELECT集合,判断是否为LL (1)文法。 分析文法为G[E]: (0)E→ TE’   (1)E’→ +TE’ (2)E’→ε    (3)T→ FT’ (4)T’→ *FT’   (5)T’→ε     (6)F→ (E)    (7)F→a 若符合LL (1)文法,由程序自动构

    2024年02月04日
    浏览(42)
  • 编译原理笔记11:自上而下语法分析(1)基础概念、左递归和公共左因子处理、递归下降分析(咕咕咕)

    词法分析,是把源程序分析成记号流,识别其中的单词。 语法分析,是要分析词法分析产生的记号流中的语法结构是否正确——对词法分析得到的记号流进行分析,以确认其是不是一个可以由我们定义好的文法推出来的句子。如果语法结构正确,语法分析器最终要为输入序列

    2024年02月11日
    浏览(39)
  • java访问https链接下载图片

    // 文件下载存储路径 String savePath = “D:/zhxcmfs/myFiles”; // 文件命名 String fileName = “图片.png”; // https文件下载链接 String apiHttp = “https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2F1114%2F040221103339%2F210402103339-8-1200.jpgrefer=http%3A%2F%2Flmg.jj20.comapp=2002size=f9999,10000q=a80n

    2023年04月08日
    浏览(41)
  • C 语言->编译和链接实现原理

    ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 今天学习 :浅学编译和链接内部实现原理 前提:本文是在gcc编译环境下学习,目前只是浅学习 在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种 是翻译环

    2024年01月20日
    浏览(37)
  • 【原文链接】Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction

    原文链接:https://openaccess.thecvf.com/content/CVPR2023/papers/Huang_Tri-Perspective_View_for_Vision-Based_3D_Semantic_Occupancy_Prediction_CVPR_2023_paper.pdf 体素表达需要较大的计算量和特别的技巧(如稀疏卷积),BEV表达难以使用平面特征编码所有3D结构。 本文提出三视图(TPV)表达3D场景。为得到空间

    2024年01月23日
    浏览(43)
  • 轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码

    轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码。 在互联网信息爆炸的时代,网址复杂而冗长,很难在口头告知他人,也难以分享到社交媒体上。因此,网址缩短服务应运而生。本文将介绍其中的一

    2024年01月23日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包