首先我们来介绍一下LL(1)文法分析。

LL(1)文法是一种自顶向下的分析方式,是从非终结符到终结符的分析方式,这种方式和我们之前说的LR(0)分析方式是刚好相反的,在我们使用LR(0)分析方式的时候。我们可以看到这个符号栈是由开始空的而后变为终结符之后再变为非终结符的过程。

下面介绍一下用LL(1)文法进行分析句子的过程。

首先要写出FIRST集和FOLLOW集。

之后根据FIRST集和FOLLOW集来进行预测分析表的构造

预测分析表构造的时候若FIRST集没有推出ε那么就可以直接在预测分析表的FIRST集的位置填入原非终结符所对应的定义项。如果推出了ε,那么就要在FOLLOW集的位置填入ε。

当然,我们要注意的一个地方就是如果表中的一个空格中填入了两个元素(select集交集非空),那么就说明这个文法不适合用LL(1)文法来分析,就要改变分析方式。


下面讲一下具体的分析过程

符号栈的开始是非终结符S

输入串的栈中的内容是输入串的从尾部逐个输入栈。

之后我们要从之前填好的预测分析表中来找到对应的规则,从这个非终结符开始,将非终结符变为终结符和非终结符的和。之后,一旦这个符号栈和这个输入串的栈的栈顶相同,那么就可以进行弹出栈顶元素。因为我们弹出的结果肯定是终结符,所以剩下的结果肯定是一个非终结符。当栈顶的元素被不断地弹出之后,之后如果这个符号栈和输入串的栈均为空的时候,就可以表明现在的分析是成功的。


之后我们来介绍一下简单优先分析

简单优先分析是按照终结符和非终结符之间的优先关系来确定句柄的。

这里首先给出优先关系的定义,这里的优先关系的定义要在原先的“>”,“

当两个符号直接连在一块的时候例如……XYZ……则XYZ的优先关系相等。如果Y还可以继续向下推,则有XZ

若两个都能继续向下推,由于我们从最左下角的句柄开始进行规约,所此时左边推出的优先级要大于右边的优先级。关于句柄的概念我们在下一章的算符优先分析中再进行介绍。

这里知道了关系之后我们就可以根据它们的关系来构造关系矩阵表。简单优先分析的关系矩阵中是出现过得所有的元素,包含终结符和非终结符。

从文法的第一个句子开始向后找关系,之后把关系矩阵写出来,需要注意的是这里的大于号和小于号是不能交换的比如A>B并不等于B

简单优先分析方法的步骤

首先这里分为符号栈,关系,输入串栈,规则,四个对应的

符号栈开始为#,输入串的栈为我们要分析的字符串的逆序入栈。当关系为小于和等于的时候输入栈的栈顶弹出进入符号栈,关系为大于的时候进行规约。

我们直接查表来进行比较要注意,此时文法的开始符号的旁边有这个“#”,也可以由此得到“#”和文法开始符号之间的关系。

在进行规约的时候,我们要在后面的规则中写出对应的文法。之后一直是这个过程直到规约到文法的初始符。

编译原理实验语义分析_「编译原理」LL(1)文法分析,简单优先分析相关推荐

  1. 蜘蛛搜索引擎_「SEO工具」如何利用爱站工具去分析各搜索引擎蜘蛛情况?

    想做好网站的SEO优化我们更多的是要做好SEO数据的监测和分析,市面上有很多分析工具,也有一些有条件的SEO技术公司会自己去开发一些SEO分析软件来进行辅助SEO优化,虽然很多人有用过爱站工具去分析搜 ...

  2. 微型计算机循环结构程序设计,微机原理实验之_分支程序、循环程序设计

    <微机原理实验之_分支程序.循环程序设计>由会员分享,可在线阅读,更多相关<微机原理实验之_分支程序.循环程序设计(6页珍藏版)>请在人人文库网上搜索. 1.实验三分支程序.循 ...

  3. 计算机组成原理寄存器的实验原理,计算机组成原理实验报告_寄存器的原理及操作课案.docx...

    <计算机组成原理实验报告_寄存器的原理及操作课案.docx>由会员分享,提供在线免费全文阅读可下载,此文档格式为docx,更多相关<计算机组成原理实验报告_寄存器的原理及操作课案.d ...

  4. 计算机组成原理实验写入怎么,计算机组成原理实验报告_寄存器的原理及操作...

    <计算机组成原理实验报告_寄存器的原理及操作>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告_寄存器的原理及操作(10页珍藏版)>请在人人文库网上搜索. 1.成绩:实 ...

  5. 编译原理简单优先分析算法

    简单优先分析算法 编译原理简单优先分析算法是一种自下而上的分析算法,本例是编译原理第三版何炎祥中一个简单优先分析算法的例子,未给出分析过程分析代码,读者可以参考我的语法分析器中输出代码,写出此算法的输 ...

  6. 怎么通过id渲染页面_「快页面」动态配置化页面渲染器原理介绍

    引言 「快页面」是知乎内部一个快速搭建后台管理页面的平台,使用者仅用半小时即可将一个常规复杂度的后台页面开发完成. 「快页面」平台的基石是它的「渲染器」,一个能将 JSON 配置渲染成页面的 Reac ...

  7. 大连理工大学计算机原理实验报告,大连理工大学计算机原理实验报告.pdf

    大连理工大学计算机原理实验报告 大连理工大学计算机原理实验报告 目 录 1 实验任务 1 2 设计方案 1 3 设计电路 3 4 设计程序 5 5 遇到的问题 2 (1)程序语法方面 2 (2 )运行 ...

  8. 编译原理实验代码c语言,编译原理实验 简单词法分析(含源代码和实验结果)

    可直接运行 原创!! 附录一 实验报告样式 <编译原理>实验报告 实验2 简单词法分析 姓名 陈婷婷 学号 1009050121 班级 计科1001班 时间: 2012/4/5 地点:文波 ...

  9. mysql数据库原理实验报告_数据库原理实验报告(Mysql).doc

    数据库原理实验报告(Mysql).doc 实验项目列表 序号实验项目名称指导教师1实验一 数据库的定义实验(验证性)2实验二 数据库的建立和维护实验(验证性)3实验三 数据库的查询实验(验证性)4实验 ...

最新文章

  1. EM算法理解的九层境界
  2. 科大星云诗社动态20210819
  3. MyEclipse中用Maven创建Web项目
  4. 剑网三通过VR来进行游戏快乐,是不是会加倍?什么时候用得上?
  5. 如何做个人职业规划和年度计划
  6. 【转】什么是磁珠(Ferrite Bead 即 FB)
  7. 三个锦囊:剖析 5G 安全难题
  8. 【C语言局部变量/静态局部变量/全局变量与静态全局变量
  9. iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
  10. 三菱伺服自动调谐_三菱伺服mr-j3与mr-j4参数有什么差别
  11. android 屏幕亮度代码,android 设置系统屏幕亮度
  12. MediaRecorder MPEG4Writer
  13. 【组队学习】【38期】组队学习内容详情!
  14. postgresql standard_conforming_strings参数
  15. ARKit 2推出共享体验
  16. Python+经济学:柯布道格拉斯生产函数相关
  17. Raspbian 教学系统安装、配置流程
  18. 设备树下的platform驱动编写
  19. 实验三 lr分析器的设计与实现_三电平ZVS半桥的控制模型与仿真 基于PSPICE
  20. 南阳理工计算机与科学技术,南阳理工学院计算机科学与技术咋样

热门文章

  1. SAP Hybris的类型系统更改和ABAP的LOAD_PROGRAM_TABLE_MISMATCH
  2. 使用SAP iRPA Studio创建的本地项目,如何部署到SAP云平台上?
  3. OPA start up and wait for
  4. 在SAP WebIDE里开发一个React component
  5. How is ngModelController initialized
  6. How to change the background color of button in Footer area
  7. SAP CRM WebClient UI BSP server event
  8. Gateway currency conversion utility
  9. java js隐藏_Javascript匿名函数是否仍然可见? (使用Java applet,这是一种隐藏JS代码的方法)...
  10. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...