2022年编译原理复习资料,基本概念 .pdf
立身以立学为先,立学以读书为本第一章1. 编译的 5 个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成2. 翻译程序:能够把某种语言转换成另一种语言的程序,而两者在逻辑上是等价的3. 解释程序:以源程序为输入,不产生目标程序,而是边解释边执行源程序本身的程序。4. 诊断编译程序:帮助程序开发和调试的程序。5. 优化编译程序:提高目标代码效率的程序。6. 运行编译程序的是宿主机,运行目标代码的是目标机。7. 交叉编译:编译程序产生不同于宿主机的目标代码。8. 可变编译程序:不需要重写编译程序中与机器无关的部分就能改变目标机。9. 程序语言由语法和语义两方面定义。10.语句包括:说明性语句、执行性语句11.子程序传参方式:传值、传地址、传名12.空间分配分方式:静态存储分配、动态存储分配13.表格管理 :对各种表格进行管理 ,包括表格的构造、查找、修改、删除、插入等;词法分析14. 词法分析:把源程序作为字符串进行扫描,根据单词词法,识别精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 4 页立身以立学为先,立学以读书为本出所有单词,过滤无用符,并检查是否为合法的单词。15. 词法分析的工具:正规式、有限自动机。16. 单词一般分为如下几种:基本字,标识符,常数,算符,界符。17. 词法规则:规定了形成单词的规则;如常数,标识符,基本字,算符等。18. 识别单词符号的方法:超前搜索19. 源程序的预处理:过滤无关的符号。20. 状态图由三种结构构成:分支结构、循环结构、终结点21. LEX语言源程序由两部分组成:正规式辅助定义式、识别规则语法分析22. 语法分析 : 根据语言的语法规则 ,从单词符号串中识别出各种语法单位 ,进行句子分析 ,并检查整个输入字串是否为合法的程序。23. 语法=词法规则 +语法规则24. 语法规则:规定了由单词构造更大语法单位的规则;如表达式,短语,语句,程序等。25. 语法分析方法:自上而下(算符优先) 、自下而上(递归下降)26. 重要的语法单位:程序 ,子程序 ,语句,短语,表达式等27. 上下文无关文法组成:终结符号、非终结符号、开始符号、产生式28. 句柄.:一个句型的最左直接短语。29. 素短语:至少含有一个终结符,且不可在分割成为更小的短语。一精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 4 页立身以立学为先,立学以读书为本个句型的最左素短语即为可归约串。30. 递归下降分析的两个问题 :文法的左递归、文法的回溯。31. 语法制导翻译:在语法分析的每次归约或推导时,根据产生式的语义进行翻译的一种方法。符号表32. 编译程序中最主要的有如下几种:符号表,常量表,标号表,子程序名表,四元式表等。33. 符号表的查找技术:线性查找、二叉查找树、哈希表34. 符号表的基本操:查找、插入、访问、修改、删除中间代码生成35. 中间代码生成:根据语义规则,把各种语法单位翻译成中间代码序列. 36. 静态语义检查:类型检查、控制流检查、一致性检查、相关名字检查37. 中间代码的表示方法:四元式、三元式、间接三元式、逆波兰式、树形表示、 DAG 优化38. 代码优化:对产生的中间代码序列进行加工变换,使变换后的代码更为高效。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 4 页立身以立学为先,立学以读书为本39. 优化的几种方法:删除公共子表达式、复写传播、删除无用代码、代码外提、强度削弱、删除归纳变量。40. 必经节点集:流图通路中所必须经过的节点的集合41. 回边:必经节点集中从后方节点到前方节点的边42. 可规约流图:流图中除去回边而剩余部分构成无环路的流图. 43. 引用定值集 udA:能到达引用点u-A(u 点引用了 A)的变量 A的所有定值点 d1,d2dn 的集合( A 在 d 定值) 。目标代码生成44. 目标代码生成:把中间代码程序翻译为机器指令或汇编指令程序。45. 生成的目标代码形式:绝对机器代码、可重定位机器代码、汇编语言代码精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 4 页