【20200422】编译原理课程课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表

  • 一、课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表
    • 问题描述
    • 题目解析
  • 二、知识巩固
    • 1、自下而上的语法分析
    • 2、分析符号串是否为文法的句子实例
    • 3、自下而上语法分析的策略
    • 4、我们如何决定什么时候移进,什么时候规约?
    • 5、关于短语、直接短语、句柄的定义
    • 6、关于移进-归约冲突的产生&解决方法
    • 7、简单优先分析法
    • 8、算符优先分析法
    • 9、算符文法(OG)& 算符优先文法(OPG)的定义

叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

一、课业打卡十七之求解文法FirstVT&LastVT&构造文法算符优先关系表

问题描述

已知文法G[S]为:
S->a|^|(T)
T->T,S|S(1)计算G[S]的FirstVT和LastVT。
(2)构造G[S]的算符优先关系表并说明G[S]是否为算符优先文法。
(3)给出输入串(a,a)# 和 (a,(a,a))# 的算符优先分析过程。

题目解析

(1)计算G[S]的FirstVT和LastVT。


(2)构造G[S]的算符优先关系表并说明G[S]是否为算符优先文法。


(3)给出输入串(a,a)# 和 (a,(a,a))# 的算符优先分析过程。

二、知识巩固

1、自下而上的语法分析

(1)优先分析法   【本章重点】简单优先分析(简洁、效率低)算符优先分析(表达式类型)(2)LR分析    【第六章学习】


自下而上语法分析试图将一个字符串反向归约至开始符号。
自下而上语法分析比自上而下语法分析更有效率,对语法的限制更少。

2、分析符号串是否为文法的句子实例

文法G[S]:
(1) S → aAcBe
(2) A → b
(3) A → Ab
(4) B → d
分析符号串abbcde是否G[S]的句子

3、自下而上语法分析的策略

自下而上语法分析的策略:移进-规约分析
移进就是将一个终结符推进栈;
归约就是将0个或多个符号从栈中弹出,根据产生式将一个非终结符压入栈;
移进-归约过程是自顶向下最右推导的逆过程(规范归约)。

文法G[E]:
E -> T + E | T
T -> int * T | int | (E)


4、我们如何决定什么时候移进,什么时候规约?

例如已知文法G[E]:
E -> T + E | T
T -> int * T | int | (E)

考虑 int | * int + int
我们可以用 T -> int进行归约,而得到 T | * int + int

致命错误: 无法规约到开始符号 E

直觉: Want to reduce only if the result can still be reduced to the start symbol

一般的移进-归约策略:

若句柄在栈顶出现,则归约;
否则移进;句柄(Handles):句型的最左直接短语。

5、关于短语、直接短语、句柄的定义

6、关于移进-归约冲突的产生&解决方法

实际应用中可能出现的’冲突’:
移进与归约都合法,产生移进-归约冲突;
归约时可以适用两个不同的产生式,产生归约-归约冲突;

二义文法会导致‘冲突’
但应注意,许多的非二义文法同样会导致‘冲突’

Conflict Solutions:

      改写文法根据产生式出现的顺序来选择根据算符的优先级    【***】

7、简单优先分析法

按照文法符号(包括终结符和非终结符)的优先关系确定句柄。

简单优先文法的定义:

满足以下条件的文法是简单优先文法
(1)在文法符号集V中,任意两个符号之间最多只有一种优先关系成立。
(2)在文法中任意两个产生式没有相同的右部。
(3)不含空产生式。

8、算符优先分析法

  • 某些文法具有“算符”特性。
    1、表达式运算符(优先级、结合性)
    2、人为地规定其算符的优先顺序,即给出优先级别和同一级别的结合性
  • 只考虑算符之间的优先关系来确定句柄。

如何确定算符优先关系?

文法G[E]:E→E+E|E-E|E*E|E/E|E^E|(E)|i

(1) 优先级次于i,右结合
(2)*和/优先级次之,左结合
(3)+和-优先级最低,左结合
(4)括号‘(’,‘)’的优先级大于括号外的运算符,小于括号内的运算符,内括号的优先性大于外括号
(5)#的优先性低于与其相邻的算符

算符优先关系的定义

9、算符文法(OG)& 算符优先文法(OPG)的定义

算符文法(OG)的定义

定义 :
如果不含空产生式的上下文无关文法 G 中没有形如 U->…VW…的产生式,其中V,W∈VN则称G 为算符文法(OG)。性质1:
在算符文法中任何句型都不包含两个相邻的非终结符。(数学归纳法)
性质2:
如 Vx 或 xV 出现在算符文法的 句型 a 中,其中V∈VN,x∈VT, 则 a 中任何 含 x 的短语必含有V。(反证法)

算符优先文法(OPG)的定义

在 OG 文法 G 中:
若任意两个终结符间至多有一种算符优先关系存在,则称G 为算符优先文法(OPG)。注意:允许b>c,c>b;不允许b>c,b<c,b=c
结论: 算符优先文法是无二义的。

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

注:
人生在勤,不索何获。

【20200422】编译原理课程课业打卡十七之求解文法FirstVTLastVT构造文法算符优先关系表相关推荐

  1. 【20200429】编译原理课程课业打卡十九之判断OPG文法求解句子分析过程

    [20200429]编译原理课程课业打卡十九之判断OPG文法&求解句子分析过程 一.课业打卡十九之判断OPG文法&求解句子分析过程 二.知识巩固 1.判断OPG文法 2.求算符优先函数 ...

  2. 编译原理基本定义(文法、算符文法、算符优先文法、算符优先关系表、算符优先分析过程)

    文法 文法和语言分为4类. 0型文法:最大类,包含1.2.3型文法. 1型文法:对0型文法来说,所有的产生式的右边的字符长度都要大于左边的字符长度. 2型文法:所有的产生式左边都只有一个字符. 3型文 ...

  3. 国内外编译原理课程实践教学现状分析

    <自己动手写编译器.链接器> 冯向萍 (新疆农业大学计算机与信息工程学院)   摘 要:本文主要从教材的选择,实践项目的设置以及实践课程占总评成绩的比例等方面分析和比较了国内外多所高校编译 ...

  4. PL/0语言编译器扩展 编译原理课程实践(1)

    转眼大学生活就要结束,编译原理课程学的东西很多都忘记了.当时我们编译原理课程实践是PL/0语言编译器扩展,在原有PL/0语言文法进行扩展.我写这次博文一是为了回忆以前学的知识,加深记忆:二是和大家分享 ...

  5. 编译原理课程作业-Cminus语言的词法及语法分析器实现

    Cminus Compiler 编译原理课程作业-Cminus语言的词法及语法分析器实现 设计思想 词法分析 使用确定有限态自动机(DFA)实现与Lex自动分析两种方式实现. 语法分析 使用递归下降方 ...

  6. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  7. 编译原理课程设计-对pl0语言进行扩充

    文章目录 一. 设计目的及要求 1.1 设计目的 1.2 设计要求 1.2.1 要求一 1.2.2 要求二 1.2.3 要求三 二.程序设计 2.1 程序的组织结构 2.1.1 PL/0编译程序函数定 ...

  8. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器

    编译原理课程实践--实现具有初等函数运算语言的解释器或编译器 作者:Sylvan Ding |转载请注明文章出处! 摘要:本文主要内容是设计词法分析器.语法分析器(LL(1).SLR(1))和语义分析 ...

  9. 【编译原理】Compiler_Stanford University 编译原理课程地址

    课程简介 编译原理课程作为计算机专业本科生的必修课,能够使学生们增加对编译过程的了解.因为想加深对编译器的了解和实现一个简单的编译器,所以我找到了该课程,通过阅读该课程的简介,觉得该课程还是十分不错的 ...

最新文章

  1. JavaScript中十种一步拷贝数组的方法
  2. c#中的BeginInvoke和EndEndInvoke 摘要
  3. 小学计算机教案表格式,小学信息技术教案表格数据处理.docx
  4. Servlet中的转发
  5. mysql实现知识图谱_基于电影知识图谱的智能问答系统学习记录
  6. Caltech数据集转为voc格式
  7. Qt实现Areo效果
  8. postman传各种类型的数组格式
  9. 微信开发 ━━ 微信商户更名后付款时仍旧为最初的简称,如何修改微信支付的店铺名称
  10. iOS10 关于推送
  11. 嵌入式学习为什么要选择4412开发板
  12. 基于低代码平台开发的督办系统为企业管理赋能
  13. B. Catching Cheaters(cf)dp
  14. 一个关于图片处理的代码
  15. ubuntu服务器安装和配置FTP服务器以及权限管理
  16. 代码之外——醒世良言
  17. JS:Caesars Cipher(凯撒密码)
  18. 北京工业大学计算机考研录取名单,2018年硕士研究生招生考试复试一志愿考生名单(信息学部)...
  19. 真正的爷们该做的事!
  20. 【Pytorch】基于CNN手写汉字的识别

热门文章

  1. 利用matlab函数生成运动模糊图像,运动模糊图像,模糊图像,锐化图像
  2. 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作
  3. 芯片k66中文数据手册_IXFK66N50Q2
  4. oracle 给表空间增加多个数据文件
  5. 科技云报道:中国电子云曹心驰:做成云计算“国家队”该有的样子
  6. SQL 获取年度第几周
  7. 巴比特 | 元宇宙每日必读:企业如何将业务转移到元宇宙?这7大步骤了解一下...
  8. 微信公众号开发--js关闭浏览器回到公众号对话窗口
  9. 远程桌面服务器零售授权许可证,由于没有远程桌面授权服务器可以提供许可证...
  10. 编程中的脚手架是什么意思?