SDD与SDT的区别

news/2025/3/19 10:46:52/

SDD与SDT的区别

这里拷贝了哈工大的SDD与SDT定义

SDD与SDT的区别:

  • SDD
    • 是关于语言翻译的高层次规格说明
    • 隐蔽了许多具体实现细节,使用户不必显式地说明翻译发生的顺序
  • SDT
    • 可以看作是对SDD的一种补充,是SDD的具体实施方案
    • 显式地指明了语义规则的计算顺序,以便说明某些实现细节

身为计算机系的学生,如果觉得概念难以理解,便用例子加以理解.

例如,对于乘法的消除左递归的CFG
T → F T ′ T ′ → ∗ F T ′ T ′ → ε F → d i g i t T\to FT^{'}\\ T^{'}\to *FT^{'}\\ T^{'}\to \varepsilon \\ F\to digit TFTTFTTεFdigit
对于产生式 T ′ → ∗ F T ′ T^{'}\to *FT^{'} TFT,其对应的SDD为

T ′ → ∗ F T 1 ′ T^{'}\to *FT_1^{'} TFT1 T 1 ′ ⋅ i n h = T ′ . i n h × F . v a l T_{1}^{\prime} \cdot inh =T^{\prime} . inh \times F.val T1inh=T.inh×F.val
T ′ ⋅ s y n = T 1 ′ ⋅ s y n T^{\prime} \cdot s y n=T_{1}^{\prime} \cdot s y n Tsyn=T1syn

而其SDT则为
T ′ → ∗ F { s t a c k [ t o p + 3 ] . T ′ i n h = s t a c k [ t o p ] . i n h ; } T 1 ′ { s t a c k [ t o p ] = s t a c k [ t o p + 6 ] } T^{\prime} \rightarrow^{*} F\left\{ stack[top+3].T^{'}inh =stack[top].inh;\right\} T_{1}^{\prime}\left\{stack[top]=stack[top+6]\right\} TF{stack[top+3].Tinh=stack[top].inh;}T1{stack[top]=stack[top+6]}
SDD说明在语法分析阶段应用该产生式时, T 1 ′ ′ T_1^{''} T1通过继承属性 i n h inh inh T T T F F F的值继承下去,从而传递给其他节点.同时在计算结束后通过综合属性 s y n syn syn将结果返回给 T ′ T^{'} T.(具体见龙书5.1.2 中对继承属性与综合属性作用的阐释)

而SDT则给出了具体的实现方案,即通过对扩展语法分析栈的操作实现.

总结一下,语法制导定义更加易读,因为它在更高的层次上指出了语法翻译的任务,而SDT则具体给出了SDD的实现,例如何时计算,如何计算这些细节.


http://www.ppmy.cn/news/272015.html

相关文章

编译原理笔记-SDD

编译原理笔记-SDD SDD与SDT的定义与区别见SDD与SDT的区别 语法制导定义 语法制导定义(Syntax-Directed Definition, SOD) 是一个上下文无关文法和属性及规则的结合。属性和文法符号相关联,而规则和产生式相关联。例子如下 属性分为综合属性和继承属性. 综合属性…

【编译原理】6—语法制导翻译Syntax-Directed Translation(SDD、SDT详细介绍)

6 语法制导翻译Syntax-Directed Translation ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 项目链接👉https://github.com/A-BigTree/college_assignment ⭐⭐⭐⭐⭐⭐ 文章目录 6 语法制导翻译Syntax-Directed Translation6.1 语法制导定义…

软件(结构)设计说明(SDD)

说明: 1.《软件(结构)设计说明》(SDD)描述了计算机软件配置项(CSCI的设计。它描述了CSCI级设计决策、CSCI体系结构设计(概要设计)和实现该软件所需的详细设计。SDD可用接口设计说明IDD和数据库(顶层)设计说明DBDD加以补充。 2.SDD连同相关的IDD和DBDD是实现该软件…

语法制导定义 SDD

语法制导定义SDD是对于 上下文无关语法CFG 的一个推广: 将每个产生式和一组语义规则相关联,用来计算该文法产生式中每个文法符号的属性值。将每个文法符号和一个语义属性集合相关联。 也就是说,SDD为CFG的每个文法符号设置了一个语义属性&am…

大模型LLM

大模型LLM的1000篇文章总结 本文收集和总结了有关大模型LLM的1000篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, 其分享了有关AI的论文、文章、图书。 query NLP重铸篇之LLM系列(Anthropic LLM) …

什么蓝牙耳机性价比高?盘点1000以内性价比高的蓝牙耳机

近些年真无线市场发展可谓风生水起,层出不穷的真无线耳机让人眼花缭乱,怎样挑选可就成为了一个问题。我自己进入数码圈内也有小五年了,对于蓝牙耳机哪个好用这个话题还是有些经验的,接下来的五款蓝牙耳机是我为大家精心挑选的&…

性价比高一点的蓝牙耳机有哪几款?高性价比蓝牙耳机推荐

现如今,在人们的日常生活当中随处可见的都是蓝牙耳机,蓝牙耳机的出现也便利了人们的生活。那么,不了解蓝牙耳机的朋友,在众多的蓝牙耳机中如何选择一款适合自己的呢?接下来,我给大家推荐几款性价比高一点的…

线程,你是个什么?

线程的基本定义 线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程(Process)中,是进程中的实际运作单位。一个线程可以与同一进程中的其他线程共享进程的全部资源,包括内存、文…