录 61.8LALR分折表 136 62基本 136 6.2.1 填空题 6.2.2单项选择题 136 6.3习题解析 143 63,1优先分析方法 6.3.2LRk)分析方法 160 第7章语法制导翻译 200 7.1基本内容 .200 7.1.1语义分析概述 .200 7.12中间语言 7.13 目标代码结构的设 7.14语法制导翻译 203 72基本题 .205 721 填空题 7.2.2单项选择题 206 7.3习额解析 212 73.1 中间语言 212 7.32语法制导翻译。 218 第8章符号表 237 8.1基本内容 8.1】符号表的作用与生存期。 237 8.12符号表的内容 .237 8.13 符号表的数据结构与符号表的组织 8.14符号表的结构与符号表的操作 238 8.15 FORTRAN的符号表 230 8.1.6 SCALE的符号表】 230 82基本题 240 8.2.1填空题 240 822单项选择恩 240 8.3习题解析 第9章运行阶段的存储组织与分配 249 9.1基本内容 249 9.1.1概述 .249 9.12静表存储分配 .250 913 动态存储分配 351 9.1.4形实参数结合 .256 9.15关于本章的学习 256 92基本题 257
4 目录 9.2.1填空题 .257 92.2单项选择题 .257 9.3习题解析 261 931 存储分配 261 9.3.2参数传递… 270 第10章代码优化 286 10.1基本内容 …286 10.1.1优化的原则. .286 10.12代码优化的基本方法 .286 10.13基本块内的局部优化 .28 10.14循环优化 .290 10.15应丑优化 202 10.2蒸本题 29g 10.2.1填空题 293 1022单项选择题 293 ‘10.3习题解析 294 第11章代码生成 .309 111基本内容 .309 111.1 概述 309 11.1.2PL0抽象机 309 112基本题 310 112.1 填空题 310 11.2.2单项选择题 31 113习题解析。 .313 第12章错误的检测与处理 .315 12.1基本内容 315 12.1.1错误的种类… .315 12.12对错误的处理方法 315 12.13 词法分析阶段的错误检测与处理 315 12.1.4语法分析阶段的错误检测与处理 316 12.1.5语义错误的检测与处理 316 12.2基本题 317 122.1填空题. …317 12.2.2单项选择愿. 第13章综合题 319 13.1基本题 .319 132习题解折 .324 D 参考文献 337
第1章 预备知识 1.1基本内容 1.1.1程序设计语言与程序的翻译 一般程序设计语言的定义都涉及语法、语义和语用3个方面。 1.语法 程序设计语言的语法是指由程序设计语言的基本符号组成程序中各个语法成分包括 最大的语法成分“程序”)的一组规则。其中由基本符号构成符号(单词)的书写规则称 为词法规则,而由符号(单词)构成语法成分的规则称为语法规则。 2.语义 程序设计语言的语义是指程序设计语言中按语法规则构成的各个语法成分的意义,也 就是各语法成分在运行阶段被计算机执行时所做的工作及其结果。语义又分静态语义(编 译时刻可确定的语法成分含义)和动态语义(运行时刻才能理解与确定的语法成分含义)。 3.语用 程序设计语言的语用表示语言符号及其使用者之间的关系,涉及符号的来源、使用和 影响,如程序的设计风格等。 1.1.2程序设计语言语法的描述 1.语法图 语法图是用图解形式来描述程序设计语言语法规则的工具。这种表示简沽、直观。例 如非负整数的语法图如图1.1所示。 数字 数字 图1.!非负整数的构成规则
编译原理习题与解析(第2版)一— 2.BNF范式 使用BNF范式来描述程序设计语言的文法时,用尖括号括住待描述的语法成分,用“: =”或“→”表示语法成分“定义为”,“”表示“或者”。BNF范式具有简洁、严谨、 精确、无歧义等优点。 例如,赋值语句的语法可表示为: <赋值语句>:=<左部变量><赋值号><表达式> 3.扩充的BNF-EBNF EBNF是在BNF的基础上增加了3组符号: (x表示x可以出现0到多次。{xm”表示x可以出现m到n次 [x表示x可能出现一次,也可能不出现。 ()表示x和y二者取。 例如简单算术表达式的语法可用EBNF表示为: <表达式>:=<表达式{(什)<项》 <项>:=<因式>{(因式>} <因式:=<变量<表达式y 4.自然语言 也可以用自然语言来描述程序设计语言的语法成分。这种表示方式显得不简洁,甚至 累赘,也不直观,且易导致定义不确切。 1.1.3程序的执行 只有正确的程序才能被执行. “一个程序是正确的”包括两层含义:一是书写正确,即合乎语法规则:二是含义正 确,即能够“正确理解与应用”程序中各种语法成分的语义定义,并在逻辑上体现了程序 书写者的意图,因而在正确地输入数据之后,就能获得预期的运行效果。 1.2基本.题 1.2.1填空题 1.一个程序是正确的,包括两层含义:一是(1)二是(2)。 答案:(1)书写正确(或合乎语法规则) (2)含义正确(或合乎语义规则和逻辑意义) 2.描述高级语言语法的常用方法有(1)一、(2)一、(3)等。 答案:(I)语法图(2)BNF范式(3)扩充的BNF范式 Page
第1章预备知识。 3.描述如何用语言基本符号组成程序中各个语法成分的一组规则称为(1);对 程序中各个语法成分含义的描述称为(2);而涉及语言符号及其使用者之间的关系的 内容称为(3)一· 答案:(1)语法(2)语义(3)语用 1.2.2单项选择题 1.一般程序设计语言的定义都涉及 3个方面。 ①语法②语义③语用④程序基本符号的确定 可达项有: a.①②③b.①②④c.①③④d.②③④ 答案:8 2.程序语言一般分为(1)和(2)·两大类,其中()通常又称为面向 机器的语言。面向机器的语言指的是(3)一,其特点是(4)一·在此基础上产生了 与人类自然语言比较接近的(2)。 可选喻有: (1)、(2)a高级语言b.专用程序语言c.低级语言d.通用程序语言 (3)a.用于解决机器硬件设计问题的语言 b.特定计算机系统所固有的语言 c.各种计算机系统都通用的语言 d.只能在一台计算机上使用的语言 (4)a.程序的执行效率低,编制效率低,可读性差 b.程序的执行效率高,编制效率高,可读性强 c.程序的执行效率低,编制效事高,可读性强 d.程序的执行效率高,编制效率低,可读性差 答案:(1)c(2)a (3)b(4)d 1.3习题解析 I.请用语法图、BNF范式、扩充的BNF范式、自然语言4种方式给出“标识符”的语 法描述。 解答:(1)标识符的构成规则可以用图12所示的语法图描述