语言的语法及其翻译方案
语文教案文言文中的语法与翻译技巧

语文教案文言文中的语法与翻译技巧主题:语文教案文言文中的语法与翻译技巧导入部分:作为语文老师,我们要教授学生学习文言文的语法和翻译技巧。
文言文是中学语文课程的重要部分,而文言文的语法和翻译技巧则是学习和理解文言文的基础。
本教案将围绕文言文中的语法和翻译技巧展开讲解,帮助学生更好地掌握这一领域。
一、文言文的语法1. 词类和功能文言文中的常见词类包括名词、动词、形容词、副词等。
我们可以通过文言文中词的用法和句子的结构来理解其功能并灵活运用。
2. 词序和语序文言文的词序和语序与现代汉语有所不同,需要我们理解其中的规律和特点,例如主谓宾的顺序、修饰成分的位置等。
3. 句子的成分和结构文言文中的句子结构相对固定,主要包括主语、谓语、宾语、状语等成分。
我们要通过学习这些成分的作用和排列顺序,有助于理解句子的意思。
4. 虚词和辅助词文言文中的虚词和辅助词在句子中起到连接和修饰的作用,例如“之”、“乎”、“而”等。
我们要学会辨析不同的虚词和辅助词,并理解其在句子中的意义和功能。
二、文言文的翻译技巧1. 翻译文言文的思维方式在翻译文言文时,我们要从文言文的角度出发,理解其特点和思维方式。
需要注意的是,不能简单地将文言文词语逐字逐句地翻译成现代汉语,而应根据语境和意义进行恰当的转换。
2. 借鉴现代汉语的表达方法在翻译文言文时,可以借鉴现代汉语的表达方法,使译文更符合现代汉语的习惯和理解。
例如,可以采用现代汉语的词汇、语序和句式来翻译文言文。
3. 注重译文的准确性和文风翻译文言文时,要注重译文的准确性和文风。
准确性是指正确传达原文的意思,避免出现歧义和误解;文风是指译文要体现文言文的古典风格,避免使用现代汉语的口语化表达。
4. 善用工具和资源在翻译文言文时,可以善用工具和资源,如字典、词典、语法书等。
这些工具可以帮助我们查找生僻词汇的意思和用法,理解特定句型和文法规则。
总结部分:在教学过程中,我们要注重培养学生的文言文阅读能力和翻译能力。
语法翻译法的总结

语法翻译法的总结引言语法翻译法是一种常用的翻译方法,主要用于将一种编程语言的源码翻译成另一种编程语言的源码。
它是编译过程中的重要组成部分,可以实现不同编程语言之间的互相转换。
本文将对语法翻译法进行总结,从基本概念到具体实现进行说明。
1. 概述1.1 什么是语法翻译法?语法翻译法是一种将一种语言的源码翻译成另一种语言的源码的方法。
它通过分析源语言的语法结构,然后根据目标语言的语法规则进行转换。
语法翻译法主要包括两个阶段:分析阶段和综合阶段。
1.2 语法翻译法的应用场景•编译器开发:编译器是将高级语言源码翻译成机器语言的工具。
语法翻译法在编译器开发中扮演着重要角色,它可以将高级语言源码翻译成中间代码或目标代码。
•跨平台开发:不同平台上的代码可能存在差异,语法翻译法可以将一种平台的代码转换为另一种平台的代码,从而实现跨平台开发。
2. 语法翻译法的实现步骤2.1 分析阶段分析阶段主要包括词法分析和语法分析。
#### 2.1.1 词法分析词法分析是将源码划分成一个个的词法单元,也就是词。
比如,在C语言中,词法单元可以是标识符、关键字、常量、运算符等。
词法分析器会根据预先定义的词法规则,将源码分解成一个个词法单元。
#### 2.1.2 语法分析语法分析是将词法单元组织成语法树的过程。
语法分析器会根据预先定义的语法规则,将词法单元组织成一棵语法树。
语法树反映了源码的语法结构,是进行后续转换的基础。
2.2 综合阶段综合阶段主要包括语义分析和目标代码生成。
#### 2.2.1 语义分析语义分析是对语法树进行语义检查的过程。
语义分析器会根据定义的语义规则,判断源码中是否存在语义错误并进行错误处理。
语义分析器还会收集源码中的相关信息,为目标代码生成做准备。
#### 2.2.2 目标代码生成目标代码生成是将语法树转换成目标语言的过程。
根据目标语言的语法规则和生成代码的策略,目标代码生成器会遍历语法树,生成目标语言的源码。
语法制导的翻译方案

语法制导的翻译方案1. 引言语法制导翻译是一种基于文法规则的翻译技术,它可以将源语言文本转化为目标语言文本。
在本文档中,我们将介绍语法制导的翻译方案,包括其基本原理、常用方法以及在实际应用中的一些注意事项。
2. 基本原理语法制导的翻译方案基于上下文无关文法(Context-Free Grammar,CFG)和语义动作,它通过在文法规则中插入动作,实现从源语言到目标语言的翻译过程。
在每个文法规则中,我们可以定义一个或多个动作,这些动作在分析过程中被触发,并产生对应的目标语言文本。
3. 常用方法3.1 自顶向下翻译自顶向下翻译是一种从文法的起始符号开始,逐步扩展语法树的过程。
它可以按照语法规则的顺序依次进行翻译,对于每个文法规则,我们可以定义相应的语义动作来生成目标语言文本。
自顶向下翻译的优点是简单直观,但在处理左递归时可能会出现无限递归的情况。
3.2 自底向上翻译自底向上翻译是一种从文法的终结符开始,逐步构建语法树的过程。
它通过将终结符逐步合并为非终结符,最终构建出完整的语法树。
自底向上翻译的优点是可以有效处理左递归,并且可以在翻译过程中处理语法上的歧义。
3.3 语法推导翻译语法推导翻译是一种基于文法推导的翻译方法。
它通过将源语言文本转化为一个推导序列,然后通过逐步应用文法规则,将推导序列转化为目标语言文本。
语法推导翻译的优点是可以明确表示翻译过程中的每一步,并且可以通过扩展文法规则来处理文法上的不完备性。
4. 实际应用中的注意事项在实际应用中,语法制导的翻译方案需要考虑以下几点注意事项:•文法设计:文法的设计需要充分考虑源语言和目标语言之间的语法结构和语义关系。
合理地定义文法规则和语义动作,可以提高翻译的准确性和效率。
•优化翻译过程:在翻译过程中,我们可以通过优化技术来提高翻译的效率。
例如,可以使用语法分析器生成的语法树作为翻译的输入,避免重复的语法分析过程。
•处理语义歧义:在翻译过程中,可能会遇到多义词或歧义句子的情况。
高中语法知识在翻译中的应用策略

高中语法知识在翻译中的应用策略翻译是将一种语言的信息转化为另一种语言的过程。
在翻译过程中,语法知识起着重要的作用,它帮助我们理解原文的句子结构和语法规则,并准确地将其转化为目标语言。
本文将探讨高中语法知识在翻译中的应用策略。
一、语序的转换语序是句子中的词语按照一定规则排列的顺序。
在不同的语言中,语序可能存在差异。
例如,在英语中,主语通常出现在谓语之前,而在中文中则相反。
在翻译过程中,我们需要根据目标语言的语序规则来调整句子结构,以保持句意的准确传达。
举个例子,原文句子为 "I like to read books",我们需要将其翻译为中文句子。
根据中文的语序规则,我们应该将"like"放在"我"前面,然后是"阅读书籍"。
因此,翻译后的句子应为 "我喜欢阅读书籍"。
二、时态和语态的转换时态和语态是语法中的重要概念,它们在不同语言中的表达方式可能不同。
在翻译过程中,我们需要根据目标语言的时态和语态规则来准确地表达句子的时间和动作方式。
举个例子,原文句子为 "He has finished his homework",我们需要将其翻译为中文句子。
根据中文的时态规则,我们应该将"has finished"翻译为"已经完成"。
此外,在中文中,我们通常使用主动语态来表达这个句子,所以翻译后的句子应为 "他已经完成了他的作业"。
三、冠词和代词的选择在不同的语言中,冠词和代词的使用方式也可能有所不同。
在翻译过程中,我们需要根据目标语言的习惯用法来选择适当的冠词和代词,以保持句子的准确性和自然流畅性。
举个例子,原文句子为 "I saw a cat chasing a mouse. It was very funny",我们需要将其翻译为中文句子。
语言的语法及其翻译方案

语言的语法及其翻译方案嘿,大家好!今天我们来聊聊一个特别有意思的话题:语言的语法及其翻译方案。
作为一名有着十年方案写作经验的大师,我就这个问题和大家分享一下我的想法。
我们得明确一点,语法是语言的灵魂。
没有语法,语言就像一滩散沙,毫无章法。
那么,语法究竟是什么呢?简单来说,语法就是一套规则,这套规则决定了我们如何组合单词、句子,以及如何表达意思。
1.语法的重要性语法的重要性不言而喻。
它不仅让我们能够准确地表达自己的意思,还能让我们的语言更具逻辑性和说服力。
想象一下,如果没有语法,我们的语言将变得混乱不堪,沟通也会变得异常困难。
2.翻译方案(1)直译法直译法是最常见的翻译方法,即将原文的语法结构直接转换成目标语言的语法结构。
这种方法的优点是保留了原文的意境和风格,但缺点是可能会产生一些不符合目标语言习惯的表达。
(2)意译法与直译法相反,意译法更注重传达原文的意思,而不拘泥于原文的语法结构。
这种方法的优点是能够使译文更符合目标语言的语法习惯,但缺点是可能会失去原文的某些特色。
(3)句式转换法句式转换法是指在翻译过程中,根据目标语言的语法规则,将原文的句式进行调整。
这种方法的优点是能够使译文更加流畅,但缺点是可能会改变原文的结构。
(4)词汇替换法词汇替换法是指在翻译过程中,根据目标语言的词汇习惯,将原文的词汇进行替换。
这种方法的优点是能够使译文更加地道,但缺点是可能会失去原文的某些含义。
3.翻译技巧(1)了解原文的背景在翻译之前,了解原文的背景是至关重要的。
这可以帮助我们更好地理解原文的意思,从而提高翻译的准确性。
(2)掌握目标语言的语法规则要想翻译出高质量的译文,我们必须掌握目标语言的语法规则。
这样,我们才能在翻译过程中灵活运用各种翻译方法。
(3)积累词汇量词汇是翻译的基础。
积累丰富的词汇量,可以帮助我们更好地表达原文的意思。
(4)注重语境翻译过程中,我们要注重语境,根据上下文来确定词义和句式。
(5)保持耐心和细心翻译是一项细致的工作,我们需要保持耐心和细心,力求做到准确无误。
语法翻译法的教学案例

语法翻译法的教学案例
语法翻译法是一种通过对比母语和目标语的语法结构来进行翻译和教学的方法。
它通过对比两种语言的语法结构,帮助学习者更好地理解和掌握目标语言的语法规则,从而提高翻译和语言表达能力。
下面我们将通过一个教学案例来介绍语法翻译法的具体应用。
教学目标,通过语法翻译法的教学,学生能够掌握英汉两种语言的语法结构,
提高翻译能力和语言表达能力。
教学内容,本次教学将以英语中的定语从句为例,通过对比英汉两种语言的定
语从句结构和用法,帮助学生掌握定语从句的翻译和运用。
教学步骤:
1. 引入,通过举例引入定语从句的概念,让学生了解定语从句在英语中的作用
和形式。
2. 对比,通过对比英汉两种语言的定语从句结构和用法,让学生了解两种语言
在定语从句上的异同点,例如英语中使用关系代词或关系副词引导定语从句,而汉语中使用“的”字结构。
3. 练习,设计一些练习题目,让学生通过翻译和填空等方式来巩固定语从句的
翻译和运用。
4. 拓展,引导学生运用定语从句进行创造性表达,例如要求学生用定语从句描
述自己或他人,增强学生的语言表达能力。
5. 总结,对本节课的内容进行总结,强调语法翻译法在定语从句教学中的重要
性和应用价值。
教学效果评估,通过课堂练习和作业,检验学生对定语从句的掌握程度和语法翻译法的运用能力。
通过以上教学案例的实施,学生可以更加深入地理解和掌握英汉两种语言的语法结构,提高翻译能力和语言表达能力。
同时,语法翻译法的教学方法也可以在其他语法教学中得到应用,帮助学生更好地学习和掌握外语。
语言翻译基础方法
语言翻译基础方法
首先说咱们要聊的是语言翻译这个事情,有点意思。
就好比你跟咱们说中文,然后我帮你翻成英文,挺简单的。
在这个领域,有一些基础方法,让我们一起来瞅瞅。
1. 文字翻译
首先得说说文字翻译。
你看,就是把一段文字从一种语言翻译成另一种语言。
咋做呢?得先理解原文的意思,然后选词拼凑出另一种语言的表达。
别看简单,这可是门大学问。
2. 句子结构
嗯,接着是句子结构。
中文跟英文,句子构造可不一样。
得瞅准主谓宾的位置,别憋死在那里。
比如,“我爱你”翻成英文就得是“I love you”,不能搞成“you love I”,
那就成了啥意思了?
3. 文化差异
这个也重要。
不同国家的文化不一样,表达方式也不同。
所以要注意翻译时不要遗漏文化背景,不然就容易出现令人哭笑不得的翻译失误。
4. 专业术语
再说说专业术语。
有些领域的术语,翻译起来可得小心翼翼。
比如医学、法律啥的,术语一搞不好,就出大事了。
所以,专业术语需要谨慎处理,别翻出岔子。
5. 利用工具
当然,现在有很多翻译工具可以帮忙。
谷歌翻译啥的,真是无所不能。
但记住,机器只是机器,有时候靠谱,有时候就嗝屁了。
得多留点心眼,不能全靠它。
咱们今天就聊到这儿吧。
语言翻译挺有意思的,也挺考验耐心。
每种语言都有自己的魅力,咋们翻译的时候也得尊重它们。
对了,别被翻译搞晕了,人生已经复杂够让人头疼了,还用不着多此一举。
交流嘛,开心最重要!。
句子语法大全及解释
句子语法大全及解释1.我喜欢在晚上散步。
2.她昨天买了一本新书。
3.他正在准备考试。
4.他是一个爱看书的人。
5.我们打算明年去旅行。
6.这个问题对我来说太难了。
7.这本书写得很好。
8.我们明天要去参加会议。
9.我对这个项目很感兴趣。
10.你的手机在哪里?11.他昨天晚上没吃饭。
12.我每天都要花很多时间上班。
13.这支队伍已经连胜了五场比赛。
14.他们正在商量下一步的计划。
15.我很高兴能帮助你。
16.我的朋友将在明天动身去旅行。
17.这个问题对我们来说很重要。
18.她跑步跑了一个小时。
19.我妈妈总是在做饭。
20.我昨天买了一只新手机。
21.主+谓: 小明跑步。
22.主+谓+宾: 我喜欢苹果。
23.主+谓+宾+宾补: 他认为你是最好的。
24.主+系+表: 这个问题很难。
25.主+谓+宾+宾补: 妈妈把房子卖给了我。
26.主+谓+间谍+宾: 他在家里给我打电话了。
27.主+谓+地点: 我在家里看书。
28.主+行为+时间: 孩子每天早上都去学校。
29.主+谓+宾+地点: 我们在公园玩耍。
30.主+谓+的+定语: 张小姐买的是一件新衣服。
31.主+谓+补+定语: 我感到很高兴。
32.主+谓+地点+时间: 我们昨天在超市遇见了他。
33.主+谓+宾+补+地点: 他让我站在那里。
34.主+谓+地点+方式: 他在教室里认真地听讲。
35.主+谓+宾+地点+时间: 妈妈在食堂里给我们买了三个包子。
36.主+谓+宾+宾补+地点: 他把他家布置得很漂亮。
37.主+谓+宾+时间+地点: 老师昨天在教室里给我们讲了一个故事。
38.主+谓+宾+宾补+定语: 小华把那个东西擦干净了。
39.主+谓+宾+宾补+方式: 她把家里的灯打开了。
40.主+谓+宾+地点+方式: 我们在电影院里看电影。
41.主谓:小明跑步。
42.主谓宾:她吃饭。
43.主谓定:他是医生。
44.主谓补:她变漂亮了。
45.主谓状:他睡得很香。
46.主谓双宾:他送给我礼物。
句子语法大全及解释
句子语法大全及解释
句子是语言中表达完整意思的基本单位。
它由一个或多个词组成,包括主语、谓语和宾语等成分。
句子可以根据结构和功能分为
多种类型,常见的包括陈述句、疑问句、祈使句和感叹句等。
句子
语法涉及到句子的结构、成分、功能以及句子之间的关系等方面。
在句子语法中,主要涉及的内容包括句子成分的分类和功能、
句子的结构和类型、句子的语法规则以及句子的语义和语用等方面。
句子成分包括主语、谓语、宾语、定语、状语、补语等,它们在句
子中承担不同的语法功能。
句子的结构和类型包括简单句、并列句、复合句等,不同类型的句子有不同的构成和语法规则。
句子的语义
和语用则涉及到句子所表达的意思以及句子在交际中的使用和作用
等方面。
句子语法的研究对于理解和运用语言具有重要意义。
通过学习
句子语法,可以帮助人们正确理解和运用句子,提高语言表达能力,避免语法错误。
句子语法的掌握还有助于提高阅读理解能力和写作
能力,为有效的交际提供基础。
总之,句子语法是语言学习和运用中的重要内容,它涉及到句
子的结构、成分、功能、类型、规则、语义和语用等方面,对于提
高语言能力和交际能力具有重要意义。
通过系统学习句子语法知识,可以更好地理解和运用语言,提高语言表达和交际能力。
常用英汉翻译方法
常用英汉翻译方法在进行英汉翻译时,存在许多常用的方法和技巧,以下是一些常用的英汉翻译方法:1. 直译法:直译法是指按照原文词序和语法结构一一对应翻译。
例如,将英文句子“Today is a sunny day”直译为“今天是一个晴朗的日子”。
2. 词义推测法:当遇到具有多义词、暗示意义或不常用词汇时,需要根据语境来推测其具体含义。
例如,当翻译英文句子“His words cut like a knife”时,可以根据语境推测出“cut like a knife”的意思是“言辞尖刻”。
3. 意译法:意译法是指根据上下文和语境,将原文的意思翻译成与之相近但不完全相同的中文表达方式。
例如,将英文句子“Break a leg”意译为“祝你好运”。
4. 倒装法:在英语中,有时候会使用倒装结构来强调一些信息。
在翻译时,可以根据需要保留或调整倒装结构。
例如,将英文句子“Only when the rain stops can we go out”翻译为“只有等雨停了,我们才能出去”。
5. 并列句分解法:当遇到复杂的并列句时,可以将其分解为简单的句子进行翻译,再根据语境进行合并。
例如,将英文句子“It was raining, so I stayed at home”分解为“It was raining. I stayedat home.”然后根据语境合并翻译。
6. 省略法:在翻译时,有时可以根据上下文和语境省略一些无关紧要或重复的信息。
例如,当翻译英文句子“I have a pen and I have a book”时,可以省略第二个“I have”翻译成“我有一支笔和一本书”。
7. 对等法:对等法是指根据语言特点和表达习惯,在翻译中使用相同或相近的表达方式。
例如,将英文句子“It's raining cats and dogs”翻译为“雨下得很大”。
8. 分词法:在英语中,分词结构非常常用。
在翻译时,可以将分词结构翻译为相应的中文句子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各种语言成分的语法及其翻译方案(示例)1. 普通声明语句的翻译下面是声明语句的文法:P→ prog id (input, output) D ; SD→D ; D | List : T | proc id D ; SList→List1, id | idT→ integer | real | array C of T1 | T1 | record DC → [num] C | ε声明语句的翻译模式:P→prog id (input, output){offset := 0}D ; SD→D ; DD→id: T{enter (, T.type, offset); offset:= offset + T.width}T→integer{T.type := integer; T.width := 4}T→real{T.type :=real; T.width :=8}T→array [num] of T1{T.type := array(num.val, T1.type);T.width := num.val×T1.width} T→↑T1{T.type := pointer(T1.type); T.width := 4}2. 嵌套过程中声明语句的翻译嵌套过程声明语句的产生式。
P→prog id (input, output) D ; SD→D ; D | id : T | proc id ; D ; S(7.1) 嵌套过程声明语句的翻译模式:P→prog id (input, output) MD;S{addwidth(top(tblptr),top(offset));pop(tblptr);pop(offset)}M→ε{t := mktable(nil);push(t, tblptr); push(0, offset)}D→D1;D2D→proc id; N D1 ; S{t:= top(tblptr);addwidth(t, top(offset));pop(tblptr);pop(offset); enterproc(top(tblptr), ,t)} D→id : T{enter(top(tblptr), , T.type, top(offset));top(offset) := top(offset) + T.width}N→ε{t:= mktable(top(tblptr)); push(t, tblptr); push(0, offset)}3. 记录的翻译下面是生成记录类型的产生式:T→record D end生成记录类型的翻译模式:T→ record L D end {T.type := record(top(tblptr));T.width := top(offset);pop(tblptr); pop(offset)}L→ε{t:= mktable(nil); push(t, tblptr); push(0, offset)}4. 赋值语句的翻译下面是典型的赋值语句文法:S→Left := EE→E1 + E2 | E1 * E2 | - E1 | (E1 ) | LeftLeft→Elist ] | idElist→Elist, E | id [E(7.2) 赋值语句的翻译模式:⑴S→Left:=E{if Left.offset=null then/*Left是简单变量id*/gencode(Left.addr ':=' E.addr);elsegencode(Left.addr '[' Left.offset '] ' ':=' E.addr)} /*Left是数组元素*/⑵E→E1+E2{E.addr:=newtemp;gencode(E.addr ':='E1.addr'+'E2.addr)}⑶E→(E1){E.addr:= E1.addr}⑷E→Left{if Left.offset=null then /*Left是简单id*/E.addr:= Left.addrelse begin /*Left是数组元素*/E.addr:=newtemp;gencode(E.addr ':=' Left.addr ' [' Left.offset ']')end}⑸Left→Elist]{ Left.addr:=newtemp; /*Left是数组元素,因此存放基址和位移*/Left.offset:=newtemp;gencode(Left.addr ':=' c(Elist.array));gencode(Left.offset ':=' Elist.addr '*' width(Elist.array))}⑹Left→id{Left.addr:=id.addr; Left.offset:=null}⑺Elist→Elist1, E{t:=newtemp;m:= Elist1.ndim+1;gencode(t ':=' Elist1.addr '*' limit(Elist1.array, m)); /*计算e m-1×n m */gencode(t ':=' t '+' E.addr); /* 计算+i m*/Elist.array:= Elist1.array;Elist.addr:=t;Elist.ndim:=m}⑻Elist→id[E {Elist.array:=id.addr; Elist.addr:= E.addr; Elist.ndim:=1}5.各种控制结构的翻译5.1 布尔表达式的翻译布尔表达式的文法为:⑴B→B1or M B2⑵B→B1and M B2⑶B→not B1⑷B→(B1)⑸B→E1relop E2⑹B→true⑺B→false⑻M→ε布尔表达式的翻译模式如下所示:⑴B→B1or M B2{ backpatch(B1.falselist, M.quad);B.truelist := merge(B1.truelist, B2.truelist);B.falselist := B2.falselist}⑵B→B1and M B2{backpatch(B1.truelist, M.quad);B.truelist := B2.truelist;B.falselist := merge(B1.falselist, B2.falselist)}⑶B→not B1{B.truelist := B1.falselist; B.falselist := B1.truelist}⑷B→(B1) {B.truelist := B1.truelist; B.falselist := B1.falselist}⑸B→E1relop E2{B.truelist :=makelist(nextquad);B.falselist := makelist(nextquad+1);gencode('if' E1.addr relop.opE1.addr 'goto –');gencode('goto –')}⑹B→true{B.truelist := makelist(nextquad); gencode('goto –')}⑺B→false{B.falselist := makelist(nextquad); gencode('goto –')}⑻M→ε{M.quad := nextquad}5.2 常用控制流语句的翻译控制流语句if-then,if-then-else和while-do的文法为:⑴S→if B then S1⑵S→if B then S1else S2⑶S→while B do S1⑷S→begin L end⑸S→A⑹L→L1;S⑺L→S(7.9)if-then,if-then-else和while-do语句的翻译模式:⑴S→if B then M1S1N else M2S2{backpatch(B.truelist, M1.quad);backpatch(B.falselist, M2.quad);S.nextlist := merge(S1.nextlist, merge(N.nextlist, S2.nextlist))}⑵N→ε{N.nextlist := makelist(nextquad); gencode('goto –')}⑶M→ε{M.quad := nextquad}⑷S→if B then M S1{backpatch(B.truelist, M.quad);S.nextlist := merge(B.falselist, S1.nextlist)}⑸S→while M1B do M2S1{backpatch(S1.nextlist, M1.quad);backpatch(B.truelist,M2.quad);S.nextlist:=B.falselist; gencode('goto'M1.quad)}⑹S→begin L end{S.nextlist:=L.nextlist}⑺S→A{S.nextlist := nil}⑻L→L1;MS{backpatch(L1.nextlist, M.quad); L.nextlist := S.nextlist}⑼L→S{L.nextlist := S.nextlist}5.3 for循环语句的翻译for循环语句的文法如下所示:S→ for id := E1to E2step E3do S1for循环语句的翻译模式如下所示:S→ for id := E1to E2step E3do M S1 {backpatch(S1.nextlist, M.again,);gencode(‘goto’, -, -, M.again); S.nextlist := M.again;}M→ε {M.addr := entry(id); gencode(‘:=’, E1.addr, -, M.addr); T1:=newtemp;gencode(‘:=’, E2.addr, -, T1); T2:=newtemp; gencode(‘:=’, E3.addr, -, T2); q:=nextquad;gencode(‘goto’, -, -, q+2); M.again:=q+1; gencode(‘+’, M.addr, T2, M.addr);M.nextlist:=nextquad; gencode(‘if’M.addr‘>’T1‘goto–’);}5.4 repeat语句的翻译repeat语句的文法如下所示:S→ repeat S1until BRepeat语句的翻译模式如下所示:S→repeat M S1until N B{backpatch(B.falselist,M.quad);S.nextlist:=B.truelist}M→ε{M.quad := nextquad}N→ε{backpatch(S1.nextlist, nextquad)}6. switch语句的语法制导翻译switch语句的文法为:S→ switch (E ) ClistClist→ case V : S Clist | default : Sswitch语句的翻译模式如下所示:⑴S→switch (E){i:=0; S i.nextlist:=0; push S i.nextlist; push E.addr; push i; q:=0; push q}Clist{pop q;pop i;pop E.addr;pop S i.nextlist;S.nextlist:=merge(S i.nextlist, q); push S.nextlist} ⑵Clist→case V :{pop q; pop i; i:=i+1; pop E.addr;if nextquad≠0 then backpatch(q, nextquad);q:=nextquad;gencode(‘if’ E.addr‘≠’ V i‘goto’ L i);push E.addr; push i;push q}S{pop q; pop i; pop E.addr; pop S i-1.nextlist;p:=nextquad;gencode(‘goto -’); gencode(L i‘:’);S i.nextlist:=merge(S i.nextlist, p);S i.nextlist:=merge(S i.nextlist, S i-1.nextlist);push S i.nextlist; push E.addr; push i; push q}Clist⑶Clist→default :{pop q; pop i; i:=i+1; pop E.addr;if nextquad≠0 then backpatch(q, nextquad);q:=nextquad;gencode(‘if’ E.addr‘≠’ V i‘goto’ V i+1);push E.addr; push i;push q}S{pop q; pop i; pop E.addr; pop S i-1.nextlist;p:=nextquad;gencode(‘goto -’); gencode(L i‘:’);S i.nextlist:=merge(S i.nextlist, p);S i.nextlist:=merge(S i.nextlist, S i-1.nextlist);push S i.nextlist; push E.addr; push i; push q}7. 过程调用和返回语句的翻译过程调用和返回语句的文法如下所示:S→ call id(Elist)Elist→Elist, E | ES→ return E过程调用语句的翻译模式如下所示:⑴S→call id (Elist) {n :=0;repeatn:=n+1;从queue的队首取出一个实参地址p;gencode('param', -, -, p);until queue为空;gencode('call', id.addr, n, -)}⑵Elist→Elist, E{将E.addr添加到queue的队尾}⑶Elist→E{初始化queue,然后将E.addr加入到queue的队尾。