1.编译程序的每个工作阶段的主要任务
词法分析(lexical analysis or scanning):自动分词,词性标注。
从左到右扫描将一个一个字符读入源程序,对构成源程序的字符流进行扫描和分解,从而识别一个单词。
语法分析(syntax analysis):在词法分析的基础上,将单词分解成各类语法词语,并表示成"语法树"。判断由词构成的短语的排列顺序是否符合对应编程语言的语法。
语法分析特点:
1.每一种“高级语言”都有自己的语法规则
2.每一种“高级语言”的编译(解释)程序都将一定将他的语法规则内嵌在其中。
语义分析(semantic analysis):按照语法树的层次关系和先后顺序,进行类型审查,审查每个算法是否符合语言规范,不符合时应报告错误。(类型审查,作用范围检查)类型分析如,java语言中,public,private,protected的区别
特点:分为静态语义分析和动态语义分析,并且静态语义分析可以在编译时被实现,而动态的则不可以。
中间代码生成:在语法和语义分析完成后,将源程序变换成一种“内部表示形式”,该代码是一种简单的记号系统,三元组或者四元组。
代码优化:对中间代码进行变换,使代码更加高效。
目标代码生成:将中间代码变换成特定机器上的绝对指令或者可重定位的汇编指令代码。主要与硬件系统和指令含义有关。
除此之外还包括表格管理程序和出错管理程序
题目:
1.错误匹配
1)else没有匹配的if
2)数组下标越界
3)使用的函数没有定义
4)在数中出现非数字字符
按逻辑上划分,编译程序第二步工作是 。
A. 语义分析 B. 词法分析 C. 语法分析 D. 代码优化
编译过程中,语法分析器的任务就是______。
A.分析单词是怎样构成的 B.分析单词串是如何构成程序的
C.分析语句和说明的语义 D.分析程序的词法错误
编译程序绝大多数时间花在_________上 。
A. 词法分析 B. 语法分析
C. 语义分析 D. 表格管理
汇编程序是将_____ __ 翻译成 ;编译程序是将 翻译成_ _。
①高级语言 ②汇编语言 ③机器语言 ④高级语言或汇编语言
⑤汇编语言或机器语言
A.①③①⑤ B. ②③①⑤ C. ④③①③ D. ②③①③
2.根据句子或句型,画出语法树,求短语、简单短语和句型
如果S->* αAβ and A->+γ,则称γ是句型αγβ的相对于变量A的短语 。
如果S->* αAβ and A->γ,则称γ是句型αγβ的相对于变量A的直接(简单)短语 最左直接短语叫做句柄。
如果S->* x,则称x是文法G[S]的句型。
句柄是最左边的直接短语
书本31页
课后习题35题
[(85条消息) 编译原理 —— 短语、直接短语、素短语和句柄_starter_zheng的博客-CSDN博客_编译原理短语](https://blog.csdn.net/starter_____/article/details/88601595?ops_request_misc=%7B%22request%5Fid%22%3A%22166711061816782414914058%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=166711061816782414914058&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-88601595-null-null.142v62pc_search_tree,201v3control_2,213v1t3_control1&utm_term=编译原理 短语&spm=1018.2226.3001.4187)
3.将正则文法转换成正则式
(85条消息) 编译原理-正则文法与正则表达式的相互转化_xigama的博客-CSDN博客_正则文法
4.用子集法将NFA转换为DFA:改造(如果需要的话)使其仅有一个初态和一个终态,构造状态集的转换表,重新为状态编号,得到DFA
PPT第三章25页
5.自动机的简化:分割法
课本53页
练习题
确定的有穷自动机的最小化 - 我闪啊 - 博客园 (cnblogs.com)
6.由正则表达式,设计相应的最小DFA。三个步骤:由三个分裂规则画出NFA;确定化得到DFA;DFA的化简
(85条消息) 正则表达式转NFA_懒猫gg的博客-CSDN博客_正则表达式转nfa
(85条消息) 【编译原理总结】由正则式构造等价的DFA并将其最小化_hanmin822的博客-CSDN博客_编译原理等价状态
7.求首符号集(对符号串)、向前看集(对非终结符)、可选集(对规则)
(85条消息) 编译原理(第四章)——首符号集和后继符号集的求法_mengsz1的博客-CSDN博客_后继符号集
first,follow,select
(85条消息) 编译原理之first集,follow集,select集解析_GroovRain的博客-CSDN博客_first follow select集
8.算符优先分析法:素短语、最左素短语的概念和求法
(85条消息) 短语,直接短语,素短语与最左素短语(语法树求法)_驼驼学编程的博客-CSDN博客_素短语和直接短语的区别
9.构造LR(1)项目集规范族以及识别活前缀的DFA,并得LR(1)分析表
《编译原理》LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析 - xpwi - 博客园 (cnblogs.com)
(85条消息) 编译原理学习笔记(二十六)~习题:构造基于LR(0)、LR(1)项目的识别活前缀的DFA_海轰Pro的博客-CSDN博客
10.对句子进行LR(1)分析,写出分析过程
(85条消息) 《编译原理》LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析_肖朋伟的博客-CSDN博客_lr(1)分析表
(85条消息) 编译原理学习笔记(十)~LR(1)分析_海轰Pro的博客-CSDN博客_lr(1)
11.四元式表示法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUh3J85J-1670372439476)(C:%5CUsers%5C30494%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20221030153408728.png)]