编译原理之最左推导和最右推导
1.定义
- 最左推导:任何一步α => β都是对阿尔法中的最左非终结符进行替换
- 左右推导:任何一步α => β都是对阿尔法中的最右非终结符进行替换
2.抛出一个小栗子
文法G(E)为:
- E -> T | E + T |E - T
- T -> F | T * F | T / F
- F -> (E) | i
给出i + i * i
的最左推导和最右推导。
思考三分钟再往下看哦~
解析:
最左推导:
从文法的起始符号开始:
E -> E + T
-> T + T
-> F + T
-> i + T
-> i + T * F
-> i + F * F
-> i + i * F
-> i + i * i
最右推导:
从文法的开始符号开始:
E -> E + T
-> E + T * F
-> E + T * i
-> E + F * i
-> E + i * i
-> T + i * i
-> F + i * i
-> i + i * i
3. 小练习
文法G(E)为:
- E -> T | E + T |E - T
- T -> F | T * F | T / F
- F -> (E) | i
给出i * (i + i)
的最左推导和最右推导。
此处思考三分钟。。
解析:
最左推导:
从文法的起始符号开始:
E -> T
-> T * F
-> F * F
-> i * F
-> i * (E)
-> i * (E + T)
-> i * (T +T)
-> i * (F + T)
-> i * (i + T)
-> i * (i + F)
-> i * (i + i)
最右推导:
从文法的开始符号开始:
E -> T
-> T * F
-> T * (E)
-> T * (E + T)
-> T * (E + F)
-> T * (E + i)
-> T * (T + i)
-> T * (F + i)
-> T * (i + i)
-> F * (i + i)
-> i * (i + 1)
编译原理之最左推导和最右推导相关推荐
- 编译原理 最左推导和最右推导
G[E]: E→T|E+T|E-T T→F|T*F|T/F F→F^P|P P→c|id|(E) 现有句子id+id*(id-id),请完成下列要求: (1)分别写出每个句子的最左推导和最右推导: ( ...
- 编译原理求最左推导和最右推导例题
一.[问题描述] 令文法G[N]为 G[N]:N→D IND D→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (1) G[N]的语言L(G)是什么? (2)给出句子01 ...
- 编译原理——第二章-最左推导、最右推导以及语法树
**** 题目 令文法为E->T|E+T|E-T T->F|T*F|T/F F->(E)|i (1)给出i+i*i的最左推导和最右推导 (2)给出i+i*i的语法树 解题过程 最左推 ...
- 最左推导和最右推导,语法树,二义性文法
※最左推导和最右推导 (每一步替换最左边的非终结符/每一步替换最右边的非终结符),最右推导称为规范推导.最右推导对应于最左规约(规范规约) 例: 文法: S--->AB A--->a|t ...
- 最左推导、最右推导及其语法树构建
最左推导 定义 在最左推导中,总是选择每个句型的最左非终结符号. [句型] 如果S=>a,其中S是文法G的开始符号,我们可以称a是G的一个句型,当a是一个终结符时,此时这个句型可以称为句子. [ ...
- 什么是上下文无关文法、最左推导和最右推导—编译原理
系列文章戳这里
- 编译原理第二章课后习题,文法的二义性判断、语法树以及最左最右推导
第二章 1.文法G=({A,B,S},{a,b,c}P,S),其中P为S→Ac|aB,A→ab,B→bc 写出L(G[S])的全部元素. 答:L(G[S])={abc} 2.文法G[N]为N→D|ND ...
- 编译原理练习题(第二章)
编译原理练习题 写一个文法,使其语言是奇数的集合,且每个奇数不以0开头. 下面文法生成的语言是什么?G1:S->AB A->aA| e B->bc|bBc G[S]为:S->a ...
- 编译原理什么是移进规约冲突_编译原理复习题
可以微信扫码观看 河南城建 <编译原理>复习题丨杨海振整理丨20150521 一.单项选择题 1.构造编译程序应掌握 .D a. 源程序 ...
最新文章
- 总结403到504的常用问题
- error 图片,加载错误-》实用笔记
- java输出1-100之间的全部素数
- C++设计模式之Adapter
- laravel 提交Request 请求后会莫名多出一个s参数,导致数据库报错问题的解决方法
- 【Java】兔子问题
- 如何使用 Java8 实现观察者模式?(上)
- Flutter之Flutter-Redux框架源码解析
- 重置SQLSERVER表的自增列,让自增列重新计数【转】
- 【MCM-2017】2017年数学建模美赛题目原文及翻译-B (个人思路)
- Python面试常见算法题集锦
- 网页特效——花间飞舞的蝴蝶
- 1044: 不及格率 C语言
- 一步教你轻松实现--Word方括号打勾☑
- JavaScript键盘鼠标事件处理
- MFC 中PreTranslateMessage(MSG* pMsg)截获按钮和编辑框的消息进行预处理
- Oracle数据库查询表中记录为空,Empty result set fetched
- 嵌入式开发模拟红外测距仪---UDP通信实现无线装置
- npm node升级到最新版本
- 二、RPA机器人开发基础