首页 > 其他分享 >语法制导的翻译

语法制导的翻译

时间:2023-12-10 11:12:07浏览次数:35  
标签:翻译 语法分析 继承 文法 语法 制导 属性

语法制导定义

Syntax-Directed Definition,SDD

语法制导的翻译

Syntax-Directed Translation,SDT

基本知识

通过向一个文法的产生式附加一些规则或程序片段

1.继承属性 inherited

父结点、本身、兄弟结点

2.综合属性 synthesized

子结点、本身

3.终结符号可以由综合属性,不能由继承属性

--语法分析树(parse tree) P28

用图形的方式展现了从文法的开始符号推导出相应语言中的符号串的过程

--语法树(syntax tree)P25

表示了源程序的层次化语法结构

L属性的定义(L-attributed definition)

每个属性必须是一个综合属性,或一个继承属性(1、产生式头关联的继承属性 2.是左边文法符号的继承或综合属性,3.不存在环)

应用

构造抽象语法树

语法制导的翻译方案

在产生式体中嵌入程序片段的一个上下文无关文法

在语法分析过程中,产生式体中的一个动作在它左边的所有文法符号都被匹配之后立刻执行

 将L属性的SDD转换为一个SDT的规则

 1.非终结符号A的继承属性的动作插入到 产生式体 中紧靠A的本次出现之前的位置上

 2.产生式头的综合属性的动作放置在产生式体的最右端

任何SDT都可以通过下面的方法实现

 1.建立一个棵语法分析树

 2.按照从左到右的深度优先顺序执行这些动作,在一个前序遍历的过程中执行

标签:翻译,语法分析,继承,文法,语法,制导,属性
From: https://www.cnblogs.com/kashin/p/17845269.html

相关文章

  • 百度翻译优化之后
    packagecom.example;importcom.google.gson.JsonArray;importcom.google.gson.JsonObject;importcom.google.gson.JsonParser;importokhttp3.*;importorg.json.JSONException;importorg.json.JSONObject;importjavax.swing.*;importjava.awt.*;importjava.awt.event......
  • Linux_3 shell语法
    1概论shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。ACTerminal中的命令行可以看成是一个“shell脚本在逐行执行”。Linux中常见的shell脚本有很多种,常见的有:BourneShell(/usr/bin/sh或/bin/sh......
  • Linux-03shell语法
    概论shell是什么shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。ACTerminal中的命令行可以看成是一个“shell脚本在逐行执行”。Linux中常见的shell脚本有很多种,常见的有:BourneShell(/usr......
  • Solidity基本语法学习3
    文档:https://solidity-by-example.org/视频教程:https://www.youtube.com/watch?v=xv9OmztShIw&list=PLO5VPQH6OWdVQwpQfw9rZ67O6Pjfo6q-p说明:本文内容:Enum,struct,datalocation,function,ViewandPureFunction,ErrorEnum(枚举)Solidity支持枚举,这对modelch......
  • 用 C/C++ 编写一个 C 语言的语法分析器程序
    任务描述本关任务:用C/C++编写一个C语言的语法分析器程序。相关知识为了完成本关任务,你需要掌握:1.DFANFA,2.C/C++编程语言基础。3.C语言的基本结构知识自动机在编译原理课堂上已经教授了大家相关知识。在完成本实训前,一定要先设计相关自动机,再开始相关功能的实现。切勿......
  • Python中函数的基础定义语法
    1、函数的定义语法:def函数名(传入参数):函数体return返回值2、函数的调用:函数名(参数)3、函数使用步骤:先定义函数后调用函数4、注意事项:参数不需要,可以省略返回值如不需要,可以省略函数必须先定义后使用#定义一个函数,输出相关信息defsay_hi():......
  • Python函数的返回值定义语法
    1、函数返回值的作用所谓返回值,就是程序中函数完成的事情后,最后给调用者的结果2、函数返回值的定义语法def函数名(参数...):函数体return返回值使用关键字:return来返回结果3、注意:函数体在遇到return后就结束,写在return后的代码不会执行#定义一个函数,完成2数相加......
  • The kexec-based Crash Dumping Solution (翻译 by chatgpt)
    原文:https://www.kernel.org/doc/html/latest/admin-guide/kdump/kdump.html这份文档包括概述、设置、安装和分析信息。概述Kdump使用kexec快速引导到一个转储捕获内核,每当需要对系统内核的内存进行转储(例如系统发生崩溃)时。系统内核的内存镜像在重启过程中得以保留,并且可以......
  • Page Tables (页表) (翻译 by chatgpt)
    原文:https://www.kernel.org/doc/html/latest/mm/page_tables.html分页虚拟内存是在1962年与虚拟内存概念一起在FerrantiAtlas计算机上发明的,这是第一台具有分页虚拟内存的计算机。随着时间的推移,这一特性迁移到了更新的计算机上,并成为所有类Unix系统的事实上的特性。1985年,这一......
  • Assembler Annotations (翻译 by chatgpt)
    原文:https://www.kernel.org/doc/html/latest/core-api/asm-annotations.html汇编注释版权所有(c)2017-2019JiriSlaby本文档描述了汇编中用于注释数据和代码的新宏。特别是,它包含了关于SYM_FUNC_START、SYM_FUNC_END、SYM_CODE_START等的信息。缘由一些代码,比如入口点、跳板......