编译原理名词解释
1. 源语言:书写源程序所使用的语言 2. 源程序:用程序设计语言书写的程序 3. 目标语言:计算机的机器指令。目标语言可以是机器语言,也可以是汇编语 言,或者是其他中间语言,但最终结果必是机器语言。 4. 目标程序:由机器指令构成的程序。目标程序是经过翻译程序加工后用目标 语言表示的程序。 5. 翻译程序:能够把某一种语言程序(源程序)改造成另一种语言程序(目标 程序)将源程序译成逻辑上等价的目标程序的程序。翻译程序有两种工作方 式:编译和解释。 6. 编译程序:也称翻译程序 7. 解释程序:有些翻译程序在翻译过程中并不产生完整的目标程序,而是翻译 一句,解释执行一句,这样的称为解释程序。 8. 汇编程序:由汇编语言写成的程序 9. 词法分析:执行词法分析的程序成为词法分析器,词法分析依据的是语言构 词规则。词法分析器从文件读入源程序,由字符拼接单词。每当识别出一个 单词,词法分析器就输出这个单词的内部码。 10. 语法分析:执行语法分析的程序叫做语法分析器。语法分析的任务就是根据 语言的规则,将词法分析器所提供的单词种别分成各类语法范畴。 11. 中间代码生成:中间代码产生有时称为语义分析,执行中间代码产生的程序 称为中间代码生成器。他的任务时按照语法分析器所识别出的语法范畴产生 相应的中间代码,并建立符号表、常数表,等各种表格。 12. 目标代码生成:执行目标代码生成的程序称为目标代码生成器。他的任务是 根据中间代码和表格信息,确定各类数据在内存中的位置,选择合适的指令 代码,将中间代码翻译成汇编语言或机器指令,这部分工作与计算机硬件有 关。 13. 符号表:用于记录源程序中出现的标识符,一个标识符往往具有一系列的语 义值,她包括标识符的名称、种属、类型、值存放的地址等等。 14. 常数表:用于记录在源程序中出现的常数。 15. 编译程序前端:是由词法分析器、语法分析器和中间代码产生器组成的。她 的特点是依赖于被编译的源程序,输出结果用中间代码描述,和目标机器无 关。 16. 编译程序后端:是由目标代码生成器组成,他的特点是和源程序无关,以中 间代码形式的源程序为输入进行处理,输出结果依赖于目标机器。 17. 文本文件:文本文件的内容由 94 个图形字符‘! ‘-’~‘ (33-126)和 4 个 控制字符换行(10) 、回车(13) 、空格(32) 、TAB(9)构成,文本文件又 称为 ASCII 码文件,扩展名通常为 TXT,文件尾用控制字符 EOF(26)指示。 18. 二进制文件:由机器指令即二进制数构成,因二进制数可能是 26(文件结束 控制符) ,故文件尾用文件长度(文件的字节数)指示,扩展名通常为EX E。 19. 源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (cutables) 20. 编译程序的流程是: 源程序-》词法分析-》语法分析-》语义分析(中间代码产生)-》目标 代码生成-》目标程序 21. 二元式编码表: 单词二元式 begin(’{’,”NUL”) end(’}’,”NUL”) real( ‘c’,”NUL”) integer(‘a’,”NUL”) 标识符(‘i’,”abc”) 无符号整数(‘x’,”223”) 无符号实数(‘y’,”1.23”) 22. 词法分析的各种正规式所代表的含义 (1)a(a|b)*描述标识符的正规式 (2)bb*描述无符号整数的正规式 (3) bb*.b* .bb* bb*.b*(E|e)(+|-|ε)bb*描述的是无符号实数的正规式 (4) (0|1) (0|1)*描述二进制数的正规式 23. 左递归的消除 文法:PPα|β消除左递归的公式是 PβP’ P’αP’|ε 24. 提取左因子 文法:Pδβ1|δβ2|δβ3|…|δβn 提取左因子的公式是 PP’ P’β1|β2|β3|…|βn 25. First 集和 Follow 集规律【E】 First 集: (1)aB 为ε,则 E 终结符的这种,则 b 在 Fisrt(E)中(2)a 在 First(E)中,此时的a 可以是+,-,*,/,.等(3)a 为ε,则First(B)/ ε添加到 First(E)中 Follow 集: (1)文法的开始符号,那么#在 Follow(E)中(2)看紧跟在所 要求的那个非终结符后面的元素,将 first(b)/ε添加到 Follow(B) (3) 若 b 为ε,或者文法式为 E,则 Follow(E)添加到 Follow(B)中 26. LL(1)分析表的构造 将非终结符的 first 集中的符号列下填上相对应的文法规则 若将非终结符的 first 集中含有ε,则在 Follow 集中的符号列下填上推出 ε的文法规则 27. LR(0)分析表的构造 (1)A rk(K 为文法规则的编号) (2)A数字 m(m 为 Ij 的 j) (3)S Acc (4)A sj(j 为 Ij 的 j) 28. SLR 分析表的构造 删除非终结符的 Follow 集中的不存在的那些列中的值 28.文法分析过程 29. LR 语法分析器的控制程序 例如:a*b+c 经词法分析,单词的二元式为 (‘i’,”a”),(‘*’,”NUL”),(‘i’,”b”),(‘+’,”NUL”),(‘i ’,”c”),(‘#’,”NUL”) 因此单词的种别序列为 i*i+i# step状态栈符号栈输入串动作 0)0#i*i+i#初始 1)05 2)03 3)02 4)027 5)0275 6)02710 7)02 8)01 9)016 10)0165 11)0163 12)0169 13)01 14) 注: 【1】i 【2】F 【3】i 【4】T*F 【5】T 【6】i 【7】F 【8】E+T #i #F #T #T* #T*i #T*F #T #E #E+ #E+i #E+F #E+T #E Acc *i+i# *i+i# *i+i# i+i# +i# +i# +i# +i# i# # # # # 移进 归约【1】 归约【2】 移进 移进 归约【3】 归约【4】 归约【5】 移进 移进 归约【6】 归约【7】 归约【8】 接受 30.aVbVc语法制导翻译过程如下所示 stepsymbol wval.addr.tc.fc输入串 0 1 2 3 # #i #X #E - -a -- -- - -- -&a -- - -- -- -1 - -- -- -2 (i,”a”) nxq=1 (V,”NUL”) (V,”NUL”) (V,”NUL”) (1)(jnz,&a,0,0) (2)(jmp,0,0,3) nxq=3 4 5 #EV #Eo ------ ---- -1--2-(i,”b”) -1--(i,”b”) 6 7 8 #Eoi #EoX #EoE --b--- ------ ------ -1---(V,”NUL”) -1----(V,”NUL”