当前位置: 首页 > news >正文

简述网站建设及维护全过程建设母婴网站的目的

简述网站建设及维护全过程,建设母婴网站的目的,移动网站建设哪家便宜,做暖暖欧美网站系列文章戳这里👇 什么是上下文无关文法、最左推导和最右推导如何判断二义文法及消除文法二义性何时需要消除左递归什么是句柄、什么是自上而下、自下而上分析什么是LL(1)、LR(0)、LR(1)文法、LR分析表LR(0)、SLR(1)、LR(1)、LALR(1)文法之间的关系编译原理第三章习…

系列文章戳这里👇

  1. 什么是上下文无关文法、最左推导和最右推导
  2. 如何判断二义文法及消除文法二义性
  3. 何时需要消除左递归
  4. 什么是句柄、什么是自上而下、自下而上分析
  5. 什么是LL(1)、LR(0)、LR(1)文法、LR分析表
  6. LR(0)、SLR(1)、LR(1)、LALR(1)文法之间的关系
  7. 编译原理第三章习题
  8. 词法分析、构建DFA、上下文无关文法、LL(1)分析、提取正规式
  9. 证明LL(1)、SLR(1)、LALR(1)文法
  10. 翻译方案、属性栈代码

编译原理—翻译方案、属性栈代码

  • 系列文章戳这里👇
  • 属性栈代码:
    • 举个栗子
  • 引入标记非终结符模拟继承属性的计算

文法如下:
S→(L)∣aL→L,S∣SS → (L) | a\\ L → L, S | S S(L)aLL,SS
(a) 写一个翻译方案,它输出每个 a 的嵌套深度。例如,对于句子 (a, (a, a)),输出的结果是 1 2 2。
文法符号S,L继承属性depth表示嵌套深度,则翻译方案如下:
S′→{S.depth=0}SS→({L.depth=S.depth}L)S→a{print(S.depth)}L→{L1.depth=L.depth,S.depth=L.depth}L1,SL→{S.depth=L.depth}S\begin{aligned} S'&→\{S.depth=0\}S\\ S&→(\{L.depth = S.depth\}L)\\ S&→a\{print(S.depth)\}\\ L&→\{L_1.depth=L.depth,S.depth=L.depth\}L_1,S\\ L&→\{S.depth=L.depth\}S \end{aligned} SSSLL{S.depth=0}S({L.depth=S.depth}L)a{print(S.depth)}{L1.depth=L.depth,S.depth=L.depth}L1,S{S.depth=L.depth}S
属性栈代码,由于 属性栈上仅能存放综合属性(后文有详细介绍),所以需要引入标记非终结符P、Q、R,及其综合属性s,继承属性i,模拟继承属性的计算,则栈代码如下:
S′→{S.depth=P.s}PSP→ϵ{P.s=0}Stack[ntop]=0S→({Q.i=S.depth,L.depth=Q.s}QL)Q→ϵ{Q.s=Q.i+1}Stack[ntop]=Stack[top−1]+1S→a{print(S.depth)}print(Stack[top−1])L→{L1.depth=L.depth,R.i=L.depth,S.depth=R.s}L1,RSR→ϵ{R.s=R.i}Stack[ntop]=Stack[top−2]L→{S.depth=L.depth}S\begin{aligned} S'&→\{S.depth=P.s\}PS\\ P&→\epsilon\{P.s=0\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop]=0\\ S&→(\{Q.i=S.depth,L.depth = Q.s\}QL)\\ Q&→\epsilon\{Q.s=Q.i+1\}\ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop]= Stack[top-1]+1\\ S&→a\{print(S.depth)\}\ \ \ \ \ \ \ \ \ \ print(Stack[top-1])\\ L&→\{L_1.depth=L.depth,R.i=L.depth,S.depth=R.s\}L_1,RS\\ R&→\epsilon\{R.s=R.i\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop] = Stack[top-2]\\ L&→\{S.depth=L.depth\}S \end{aligned} SPSQSLRL{S.depth=P.s}PSϵ{P.s=0}                       Stack[ntop]=0({Q.i=S.depth,L.depth=Q.s}QL)ϵ{Q.s=Q.i+1}            Stack[ntop]=Stack[top1]+1a{print(S.depth)}          print(Stack[top1]){L1.depth=L.depth,R.i=L.depth,S.depth=R.s}L1,RSϵ{R.s=R.i}                   Stack[ntop]=Stack[top2]{S.depth=L.depth}S

(b) 写一个翻译方案,它打印出每个 a 在句子中是第几个字符。例如,当句子是 (a, (a, (a, a),(a)))时,打印的结果是 2 5 8 10 14。
使用综合属性out表示当前文法符号推出的字符总数,基础属性before表示该文法符号前有多少个字符,则翻译方案如下:
S′→{S.before=0}SS→{L.before=S.before}(L){S.out=L.out+2}S→a{S.out=1;print(S.before+1)}L→{L1.before=L.before,S.before=L.before+L1.out+1}L1,S{L.out=L1.out+S.out+1}L→{S.before=L.before}S{L.out=S.out}\begin{aligned} S'&→\{S.before=0\}S\\ S&→\{L.before = S.before\} \\&\ \ \ \ \ \ \ \ \ \ \ (L) \\&\ \ \ \ \ \ \ \ \ \ \ \{S.out=L.out+2\}\\ S&→a\{S.out=1;print(S.before+1)\}\\ L&→\{L_1.before=L.before, \\&\ \ \ \ \ \ \ \ \ \ \ S.before=L.before+L_1.out+1\} \\&\ \ \ \ \ \ \ \ \ \ \ L_1,S \\&\ \ \ \ \ \ \ \ \ \ \ \{L.out=L_1.out+S.out+1\}\\ L&→\{S.before=L.before\}S\{L.out=S.out\} \end{aligned} SSSLL{S.before=0}S{L.before=S.before}           (L)           {S.out=L.out+2}a{S.out=1;print(S.before+1)}{L1.before=L.before,           S.before=L.before+L1.out+1}           L1,S           {L.out=L1.out+S.out+1}{S.before=L.before}S{L.out=S.out}
同理上述翻译方案栈代码如下:
S′→{S.before=P.s}PSP→ϵ{P.s=0}Stack[ntop]=0S→({Q.i=S.before,L.before=Q.s}QL){S.out=L.out+2}Q→ϵ{Q.s=Q.i+1}Stack[ntop]=Stack[top−1]+1S→a{print(S.before)}print(Stack[top−1])L→{L1.before=L.before,R.i=L.before+L1.out+1,S.before=R.s}L1,RS{L.out=L1.out+S.out+1}Stack[ntop]=Stack[top−3]+Stack[top]+1R→ϵ{R.s=R.i}Stack[ntop]=Stack[top−2]+Stack[top−1]+1L→{S.before=L.before}S{L.out=S.out}Stack[ntop]=Stack[top]\begin{aligned} S'&→\{S.before=P.s\}PS\\ P&→\epsilon\{P.s=0\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop]=0\\ S&→(\{Q.i = S.before,L.before = Q.s\} \\&\ \ \ \ \ \ \ \ \ \ \ QL) \\&\ \ \ \ \ \ \ \ \ \ \ \{S.out=L.out+2\} \\ Q&→\epsilon\{Q.s=Q.i+1\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop]= Stack[top-1]+1\\ S&→a\{print(S.before)\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ print(Stack[top-1])\\ L&→\{L_1.before=L.before, \\&\ \ \ \ \ \ \ \ \ \ \ R.i=L.before+L_1.out+1, \\&\ \ \ \ \ \ \ \ \ \ \ S.before=R.s\} \\&\ \ \ \ \ \ \ \ \ \ \ L_1,RS \\&\ \ \ \ \ \ \ \ \ \ \ \{L.out=L_1.out+S.out+1\} \ \ \ \ \ \ \ \ \ Stack[ntop]=Stack[top-3]+Stack[top]+1 \\ R&→\epsilon\{R.s=R.i\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop] = Stack[top-2]+Stack[top-1]+1\\ L&→\{S.before=L.before\}S \\& \ \ \ \ \ \ \ \{L.out=S.out\} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Stack[ntop]=Stack[top] \end{aligned} SPSQSLRL{S.before=P.s}PSϵ{P.s=0}                                              Stack[ntop]=0({Q.i=S.before,L.before=Q.s}           QL)           {S.out=L.out+2}ϵ{Q.s=Q.i+1}                                   Stack[ntop]=Stack[top1]+1a{print(S.before)}                               print(Stack[top1]){L1.before=L.before,           R.i=L.before+L1.out+1,           S.before=R.s}           L1,RS           {L.out=L1.out+S.out+1}         Stack[ntop]=Stack[top3]+Stack[top]+1ϵ{R.s=R.i}                                          Stack[ntop]=Stack[top2]+Stack[top1]+1{S.before=L.before}S       {L.out=S.out}                                   Stack[ntop]=Stack[top]

属性栈代码:

  • 如何在自底向上分析中计算继承属性?
    • 属性栈上仅能存放综合属性
    • 分析栈中符号的继承属性
      • 属性copy规则
        如果,A→XYA→XYAXY,有语义规则Y.i:=X.sY.i := X.sY.i:=X.s
        翻译方案可写为:
        A→X{Y.i:=X.s}YA → X \{ Y.i := X.s \} YAX{Y.i:=X.s}Y
    • 从句柄下面取继承属性! 在这里插入图片描述

举个栗子

有如下文法与翻译方案

 D→T { L.in := T.type }  L 			T→int { T.type := integer }T→real	{ T.type := real }L→ { L1.in := L.in }L1 , id {addtype(id.entry, L.in) }L→id { addtype(id.entry, L.in) }

对于输入串:int p,q,r 分析过程如下:

![在这里插入图片描述](https://img-blog.csdnimg.cn/c10261d903ac4b72a199dc6df3755419.png

在这里插入图片描述

引入标记非终结符模拟继承属性的计算

在这里插入图片描述
在这里插入图片描述

http://www.yayakq.cn/news/99194/

相关文章:

  • 广西造建设工程协会网站温州市建设小学大南网站
  • 租服务器发布网站网站建设的参考书籍
  • 专门做牛肉的网站凡科手机网站建设
  • 免费的网站软件下载安装wordpress 静态设置
  • 宁国市城乡与住房建设网站建设部考试中心网站
  • 通栏 网站模板做胃镜多少钱天津津门网站I
  • 建设隔离变压器移动网站湖南省住房和城乡建设厅老网站
  • 企业网站托管外包怎么做网站建设刂搜金手指下拉二五
  • 黄一级a做爰片免费网站wordpress 插件play
  • 旅游网站建设国内外现状给公司创建网站
  • 昆山网站建设jofuns万网主机 网站重做
  • 济南做html5网站天津做网站的
  • 建设网站用什么好网站开发后台用什么语言
  • 想建立一个网站怎么做企业查询软件免费
  • 中国建设部网站关于资质批量网站建设
  • 苏州市网站网页设计案例图片
  • 网站制作零基础学习分销商城系统有哪些
  • 佛山公司网站推广外包服务外贸网站搭建推广
  • phpwind怎么做网站网络营销的目的
  • 网站主色调简介如何做彩票网站代理
  • 网站建设公司网站建设专业品牌国外优秀vi设计案例
  • 计算机网站建设相关的书籍小米发布会在哪看
  • 安徽住房和城乡建设厅网站首页学习网站建设好找工作吗
  • 营养早餐网站的设计与制作淘客网站建设收费吗
  • 网站建设 验证码做微商海报的网站
  • 网站付款方式电子商务网站建设调查问卷
  • 显示网站建设中淮安哪里做网站
  • 响应式博客网站模板深圳卓越城蔚蓝铂樾府
  • 开通网站必须做域名空间江门当地的免费网站优化
  • wordpress 多站点 多域名自适应网站制作教程