程序设计语言编译原理_考试重点(终)
编译原理复习重点含答案
编译原理复习重点含答案编译原理复习重点编译原理是计算机科学中的一门重要课程,它研究的是如何将高级语言程序转化为机器语言的过程。
在编译原理的学习中,我们需要掌握一些重要的概念和技术,以便能够理解和应用编译器的工作原理。
本文将重点介绍编译原理的几个重要主题,并提供相应的答案供参考。
一、词法分析词法分析是编译器的第一个阶段,它的任务是将输入的字符序列划分为一个个有意义的词素(token)。
词法分析器通常使用有限自动机(DFA)来实现,其工作原理是将输入字符序列逐个读入,并根据事先定义好的词法规则进行匹配和识别。
常见的词法单元包括关键字、标识符、常量、运算符等。
常见的词法规则包括:1. 关键字:例如if、while、for等。
2. 标识符:由字母、数字和下划线组成,且以字母或下划线开头。
3. 常量:包括整数常量、浮点数常量、字符常量和字符串常量等。
4. 运算符:例如加法运算符+、减法运算符-等。
5. 分隔符:例如逗号、分号等。
词法分析的结果是一个个词法单元,每个词法单元包含一个词素和对应的词法单元类型。
例如,对于输入程序"int a = 10;",词法分析的结果可能是[("int", "关键字"), ("a", "标识符"), ("=", "运算符"), ("10", "整数常量"), (";", "分隔符")]。
二、语法分析语法分析是编译器的第二个阶段,它的任务是将词法分析器输出的词法单元序列转化为抽象语法树(AST)。
语法分析器通常使用上下文无关文法(CFG)来描述语言的语法结构,并使用递归下降、LL(1)分析、LR分析等算法进行分析。
常见的语法规则包括:1. 表达式:例如算术表达式、布尔表达式等。
编译原理期末总结复习
编译原理期末总结复习(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如公文写作、报告体会、演讲致辞、党团资料、合同协议、条据文书、诗词歌赋、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, this shop provides you with various types of classic sample essays, such as official document writing, report experience, speeches, party and group materials, contracts and agreements, articles and documents, poems and songs, teaching materials, essay collections, other sample essays, etc. Learn about the different formats and writing styles of sample essays, so stay tuned!编译原理期末总结复习编译原理期末总结复习(精选3篇)编译原理期末总结复习篇1一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
编译原理考试重点整理
第一章1.编译程序:能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的一种程序。
通常是从高级语言转换成为低级语言。
2.解释程序:它以该语言写的源程序作为输入,但是不产生目标代码,而是边解释边执行源程序本身。
3.诊断编译程序:专门用于帮助程序开发和调试的编译程序。
4.优化编译程序:着重于提高目标代码效率的编译程序。
5.宿主机:运行编译程序的计算机。
6.目标机:运行编译程序所产生目标代码的计算机。
7.交叉编译程序:一个程序产生不同于宿主机的机器代码的程序。
8.可变目标编译程序:如果不需要重新编译程序中与机器无关的部分就能改变目标机,则该编译程序就叫做可变目标编译程序。
PS:世界上第一个编译程序——FORTRAN编译程序——20世纪50年代9.编译过程●第一阶段:词法分析——词法分析器1)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),标示符,常熟,算符和界符。
2)单词符号是语言的基本组成成分,是人们理解和编程的基本要素。
3)描述词法规则的有效工具是:正规式和有限自动机●第二阶段:语法分析——(词法)分析器1)任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位,如“短语”、“子句”、“句子”、“程序段”和“程序”等。
通过语法分析,确定整个输入串是否构成语法上正确的“程序”。
2)语法分析所依据的是语言的语法规则。
通常是上下文无关文法描述、3)词法分析是一种线性分析,而语法分析是一种层次结构分析。
●第三阶段:语义分析和中间代码产生——语义分析器1)任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
2)对每种语法范畴进行静态语义检查—>进行中间代码的翻译。
3)语义分析所依据的是语言的语义规则,通常使用属性文法描述语义规则。
4)中间代码:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。
编译原理复习题一(含答案)
一、单选题(每题2分,共20分)1. 编译器的()阶段可将源程序的字符流收集到若干记号中。
A. 语法分析B. 语义分析C. 代码生成D. 词法分析2. 文法A aA | b属于正则文法,正则文法在乔姆斯基层次中对应于()文法。
A. 1型B. 2型C. 3型D. 0型3. 某C语言源代码文件包含#include <stdio.h>,()将对源代码进行处理,把文件stdio.h 包含进去。
A.编译器B.解释器C.汇编器D.预处理器4. LL(1)文法的充要条件是()。
A.对于文法中的每条产生式Uα1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。
C.A和BD.都不是5. 以下说法中正确的是()。
A.任何语言都可以描述为一个正则表达式。
B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。
C.任何一个DFA只有一个终态。
D.NFA的弧上标记只含输入字母表中的元素。
6.合成属性的计算可以通过对语法树进行()遍历进行。
A. 前序B.中序C.后序D.任意7.乔姆斯基的2型文法是这样一种语言,其产生式限制为()。
A. α->βB. P->βC. P->a或P->aβD. αPγ->αβγ8. 正则式的“*”读作()。
A. 并且B.连接C.正则闭包D.闭包9. 编译程序中的语义分析器接受以()为单位的输入,并产生信息供以后各阶段使用。
A. 语法树B.子程序C.单词D.语句10.文法A->aAb|ab生成的语言是()。
A. {ab}B.{aAb}C. {anbn|n≥1}D.{anbn|n≥0}二、判断题(每题2分,共10分,对的打√,错的打×)1. 一个LR(0)文法一定是SLR(1)文法。
()2. 在类型声明文法中,类型属性type是继承属性。
编译原理全复习(完整版)
1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。
(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。
(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。
(4)优化器,对中间代码进行优化处理。
(5)目标代码生成器,把中间代码翻译成目标程序。
(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。
(7)出错管理,把错误信息报告给用户。
编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。
(2)。
语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。
(3)语义分析与中间代码产生。
任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
(4)优化。
任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
(5)目标代码生成。
任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。
2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。
b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。
《编译原理》重点知识总结
《编译原理》知识点总结目录第一章引论第二章高级语言及其语法描述第三章语法分析——自上而下分析第四章属性文法和语法制导翻译第五章语义分析和中间代码产生第六章优化第一章引论一.编译程序(compiler):把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序二.编译程序的工作的五个阶段:词法分析、语法分析、中间代码产生、优化、目标代码产生1.词法分析任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。
依循的原则:构词规则描述工具:有限自动机FOR I := 1 TO 100 DO保留字标识符等符整常数保留字整常数保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。
依循的原则:语法规则述工具:上下文无关文法3.语义分析与中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。
(变量是否定义、类型是否正确等)依循的原则:语义规则中间代码:三元式,四元式,逆波兰记号,树形结构等。
是一种独立于具体硬件的记号系统。
例:将Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z4. 优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。
依循的原则:程序的等价变换规则FOR K:=1 TO 100 DOBEGINM := I + 10 * K;N := J + 10 * K;END4.目标代码产生任务: 把中间代码变换成特定机器上的目标代码。
依赖于硬件系统结构和机器指令的含义目标代码三种形式:a)绝对指令代码: 可直接运行b)可重新定位指令代码: 需要连接装配c)汇编指令代码: 需要进行汇编第二章高级语言及其语法描述2.1.1语法词法规则:单词符号的形成规则。
a)单词符号是语言中具有独立意义的最基本结构。
编译原理考试题及答案
编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
完整版编译原理复习题及答案
编译原理复习题及答案一、选择题1.一个正规语言只能对应( B )A 一个正规文法B 一个最小有限状态自动机2.文法G[A] :A→εA→aB B→Ab B→a是( A )A 正规文法B 二型文法3.下面说法正确的是( A ) A一个SLR(1)文法一定也是LALR (1)文法B一个LR (1)文法一定也是LALR (1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL (1)文法的( A )A 必要条件B 充分必要条件5.下面说法正确的是( B )A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是( A )A 归约速度快B 对文法限制少7.一个LR (1)文法合并同心集后若不是LALR (1)文法( B )A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/ 归约冲突8.下面说法正确的是( A )A Lex 是一个词法分析器的生成器B Yacc 是一个语法分析器9.下面说法正确的是( A )A一个正规文法也一定是二型文法B一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C) 。
A 、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A) 是一种典型的解释型语言。
A .BASICB .CC.FORTRAN D.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B) 完成的。
A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B) A .源程序B .目标程序C.连接程序 D .解释程序14.(C) 不是编译程序的组成部分。
A. 词法分析程序B. 代码生成程序C.设备管理程序D. 语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优目标代码生成等六个部分,还应包括(C)A .模拟执行器B .解释器C.表格处理和出错处理D .符号执行器16.编译程序绝大多数时间花在(D) A .出错处理B.词法分析C.目标代码生成D.表格管理17.源程序是句子的集A. 线性表(B) 可以较好地反映句子的结构。
编译原理复习重点含答案
1、给出下面语言的相应文法。
L1={a n b n c i|n≥1,i≥0}从n,i的不同取值来把L1分成两部分:前半部分是anbn:A→aAb|ab后半部分是ci:B→Bc|ε所以整个文法G1[S]可以写为:G1(S):S→AB ;A→aAb|ab ;B→cB|ε3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。
(要求:先将正规式转化为NFA,再将NFA确定化,最小化)4、对下面的文法G:E →TE ’ E ’→+E|ε T →FT ’ T ’→T|εF →PF ’F ’→*F ’|ε P →(E)|a|b|∧(1)证明这个文法是LL(1)的。
(2)构造它的预测分析表。
(1)FIRST(E)={(,a,b,^}FIRST(E')={+,ε}FIRST(T)={(,a,b,^}FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^}FIRST(F')={*,ε}FIRST(P)={(,a,b,^}FOLLOW(E)={#,)}FOLLOW(E')={#,)}FOLLOW(T)={+,),#}FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#}FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. (3)+ * ( ) a b ^ # EE TE →'E TE →' E TE →' E TE →'E' '→+E E'→E ε'→E εTT F T →' T F T →' T F T →' T F T →'T' '→T ε'→T T '→T ε '→T T '→T T '→T T '→T εFF P F →'F P F →' F P F →' F P F →'F''→F ε '→'F F * '→F ε'→F ε '→F ε '→F ε '→F ε '→F εPP E →()P a → P b →P →^5、考虑文法: S →AS|b A →SA|a (1)列出这个文法的所有LR(0) 项目。
编译原理-期末复习
编译原理-期末复习编译原理⼀、单选题1、将编译程序分为若⼲个“遍”是为了()。
BA.提⾼程序的执⾏效率B.使程序的结构更加清晰C.利⽤有限的机器内存并提⾼机器的执⾏效率D.利⽤有限的机器内存但降低了机器的执⾏效率2、构造编译程序应掌握()。
DA.源程序B.⽬标语⾔C.编译⽅法D.以上三项都是3、变量应当()。
CA.持有左值B.持有右值C.既持有左值⼜持有右值D.既不持有左值也不持有右值4、编译程序绝⼤多数时间花在()上。
DA.出错处理B.词法分析C.⽬标代码⽣成D.管理表格5、()不可能是⽬标代码。
DA.汇编指令代码B.可重定位指令代码C.绝对指令代码D.中间代码6、编译程序是对()。
DA.汇编程序的翻译B.⾼级语⾔程序的解释执⾏C.机器语⾔的执⾏D.⾼级语⾔的翻译7、正规式M1和M2等价是指()。
CA.M1和M2的状态数相等B.M1和M2的有象弧条数相等C.M1和M2所识别的语⾔集相等D.M1和M2状态数和有象弧条数相等8、如果⽂法G是⽆⼆义的,则它的任何句⼦()。
AA.最左推导和最右推导对应的语法树必定相同。
B.最左推导和最右推导对应的语法树可能相同。
C.最左推导和最右推导必定相同。
D.可能存在两个不同的最左推导,但它们对应的语法树相同。
9、⽂法G:S→S+T|TT→T*P|PP→(S)|i句型P+T+i的短语有()BA.i,P+TB. P,P+T,i,P+T +iB.P+T + i D. P,P+T,i10、产⽣正规语⾔的⽂法为()。
DA.0型B.1型C.2型D.3型11、⽂法G:S→b|?|(T)T→T?S|S则FIRSTVT(T)=() CA.{b,?,(}B.{b,?,)}C.{b,?,(,?}D.{b,?,),?}12、给定⽂法:A→bA | cc,下⾯的符号串中,为该⽂法句⼦的是()。
A①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc可选项有:A.①B.①③④⑤C.①④D.①④⑤13、采⽤⾃上⽽下分析,必须()。
编译原理期末考试复习整理(详细列出考试重点+重点例题)
编译原理期末考试复习整理(详细列出考试重点+重点例题)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March目录第一章 (3)词法分析: (3)语义法分析 (3)中间代码 (3)第二章 (3)1.根据语言写出文法 (4)2.根据文法写语,描述其特点(必考大题2-3类型) (4)3.文法的规范推导、语法树、短语、句柄(必考大题,2-7,2-11) (6)第三章 (11)1.给出一个正规文法 (左线性、右线性方法),写出其状态转换图(必考) (11)1.1右线性文法写出状态转换图 (必考) (11)1.2状态转换图写出右线性文法G (12)1.3左线性文法写出状态转换图 (必考) (13)2.非确定自动机的确定化 (14)第四章 (15)第五章 (15)属性文法与属性翻译文法 (15)逆波兰式(大题) (16)四元式(大题) (16)第一章词法分析:分析源程序的结构,判断它是否是相应程序设计语言的合法程序语义法分析的任务是根据语言的语义规则对语法分析得到的语法结构进行静态的语义检查(确定类型、类型与运算合法性检查、识别含义等),并且转换成另一种内部形式(语义树)表示出来或者直接用目标语言表示出来。
中间代码是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是便于优化、移值;三是容易将它翻译成目标代码第二章文法G定义为四元组(V N,V→,P,S )其中V N为非终结符号(或语法实体,或变量)集;V→为终结符号集;P为产生式(也称规则)的集合; V N,V→和P是非空有穷集。
S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。
V N和V→不含公共的元素,即V N ∩V→ = φ,通常用V 表示V N∪ V→,V称为文法G的字母表或字汇表。
编译原理期末要点总结
第一章引论什么叫编译程序翻译程序:把某一种语言程序转换成另一种语言程序编译程序:把高级语言程序转换成低级语言程序的翻译程序汇编程序:把汇编语言程序翻译成机器语言程序编译执行与解释执行编译执行:源程序编译成目标程序后执行。
解释执行:不产生目标代码边解释边执行。
编译程序阶段1. 词法分析2. 语法分析3. 语义分析与中间代码生成4. 优化5. 目标代码生成遍:对源程序或源程序的中间结果从头到尾扫描一次。
编译前端:由与源语言有关但与目标机无关。
词法分析、语法分析、语义分析与中间代码生成。
编译后端:与目标机有关。
优化、目标代码生成。
编译工具生成越来越多的人已使用高级语言作工具来编译程序。
第二章高级语言及其语法描述程序语言的定义程序语言由语法和语义两方面定义。
语法语法是一组规则,分为词法规则(规定了字母表中哪样的字符串是一个单词符号)和语法规则(规定了如何从单词符号形成更大的结构)。
语义定义一个程序的意义的一组规则。
程序语言的语法描述∑(Sigma):有穷字母表。
符号:∑中的每个元素。
符号串:符号所构成的一个有穷序列。
ε(Epsilon):空字,不包含任何符号的序列。
∑*(∑的闭包):∑上的所有符号串的全体,包括ε。
连接积:UV={αβ|α∈ U&β∈ V } U、V⊆ ∑*●UV不一定等于 VU●V n=VV…V(n个V的连接积)●V0 = {ε}●V*=V0 ∪ V1 ∪ V2 ∪ V3 ∪ …●V+(正则闭包)=VV*形式语言文法G是一个四元组(VT,VN,S,P)●VT:终结符号集(一般大写字母)●VN:非终结符号集(一般小写字母与各种符号)●S:开始符号●P:产生式集合(A→α)0型文法(短语文法)、1型文法(上下文有关文法)、2型文法(上下文无关文法)、3型文法(正规文法)描述能力 0型>1型>2型>3型上下文无关文法:产生式左侧为单一非终结符,右侧为终结符与非终结符的随意组合最左/右推导:任何一步α ⇒β都是对α中的最左/最右非终结符进行替换。
最全的编译原理知识点--完美总结
不容易掌握。 38.实现扩充语言编译程序的方式有: 直接法:直接接受扩充式语言,并按语言的语义规则处理。 间接法:接受串行源程序(或带并行指示标志的串行源程序),并行编译程序对源程序进 行并行性检查,将检测到的并行成分转换成并行语句。或者立即进行并行编译处理。 39.并行粒度是对并行执行任务或者事务大小的度量。 分为作业级,用户级,程序级,指令级(语 句级)。作业级粒度最大,指令级粒度最小。并行编译程序应该选择适当的并行粒度。 40.加速比 Sp 可认为是应用程序在单处理机上串行执行时间 Ts 和 p 个处理器并行执行的时 间 Tp 之比,即 Sp=Ts/Tp。分析比较并行编译程序所生成的目标程序的执行速度是可用此 指标。 41.并行硬件上实现神经模型和连接机制模型途径: 用大量的专门的神经元器件连接成特定的模型。用通用并行计算机支持各种连接模型。 第二章 1. 字母表:字母表是元素的非空有穷集合。字母表中的元素称为符号。 2. 符号串:符号的有穷序列成为符号串。什么符号也不包含的符号称为空符号串。符号串 中符号的个数称为符号的长度。 3. 符号串相等 若 xy 是集合上的两个符号串。且符号串的每个元素和元素的位置均相等时 符号串相等。 4. 符号串的正闭包:A+ 为集合 A 上所有符号串的集合。 5. 符号串的自反闭包:A* 自反闭包不包含 A 本身 A+=AA*=A*A 6. 文法: 文法是对语言结构的定义与描述。 即从形式上用于描述和规定语言结构的称为 “文 法” (或称为“语法” ) 。对于 we 妇女发 要研究它的句型、句子和语言。 7. 语法规则:我们通过建立一组规则,来描述句子的语法结构。规定用“::=”表示“由„„ 组成”或“定义为„„” 。 8. 产生式的定义;设 VN、 VT 分别是非空有限的非终结符号集和终结符号集, V=VN∪ VT ,VN∩VT=Φ 。 一个产生式是一个有序偶对(α ,β ),其中α ∈V+,β ∈V*,通常表示 为α →β 或α ::=β 。称α 为产生式的左部,称β 为产生式的右部。产生式又称为重写规 则,它意味着能将一个符号串用另一个符号串替换。 9. 文法的定义:文法 G =(VN,VT,P,S) 。VN:非终结符号集。VT:终结符号集。P: 产生式或规则的集合。S:开始符号(识别符号) S∈VN. 10.文法和语言分类 Chomsky 将文法分为四类:0 型、1 型、2 型、3 型。这几类文法的差别 在于对产生式施加不同的限制。 11.0 型文法:P: α ::=β 其中α ∈(VN∪VT)+,β ∈(VN∪VT)* 0 型文法称为短语结构文法。规则的左部和右部都可 以是符号串,一个短语可以产生另一个短语。 0 型语言:L0 这种语言可以用图灵机(Turing)接受。 12.1 型文法: P: γ 1Aγ 2::= γ 1δ γ 2 其中 γ 1,γ 2∈(VN∪VT)*, A∈VN, δ ∈ (VN∪VT)+ 称为上下文有关文法或上下文敏感文法。也即只有在 γ 1,γ 2 这样的上下文中才能把 A 改写为δ 1 型语言:L1 这种语言可以由一种线性界限自动机接受.
编译原理考试知识点复习
第一章:编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序。
解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。
编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。
解释程序和编译程序的根本区别:是否生成目标代码第三章:Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类:0型文法(PSG)◊ 0型语言或短语结构语言文法G的每个产生式α→β中:若α∈V*VNV*, β∈(VN∪VT)* ,则G是0型文法,即短语结构文法。
1型文法(CSG)◊ 1型语言或上下文有关语言在0型文法的基础上:若产生式集合中所有|α|≤|β|,除S→ε(空串)外,则G是1型文法,即:上下文有关文法另一种定义:文法G的每一个产生式具有下列形式:αAδ→αβδ,其中α、δ∈V*,A∈VN,β∈V+;2型文法(CFG)◊ 2型语言或上下文无关语言文法G的每个产生式A→α,若A∈VN ,α∈(VN∪VT)*,则G是2型法,即:上下文无关文法。
3型文法(RG)◊ 3型语言或正则(正规)语言若A、B∈VN,a∈VT或ε,右线性文法:若产生式为A→aB或A→a左线性文法:若产生式为A→Ba或A→a都是3型文法(即:正规文法)最左(最右)推导在推导的任何一步α⇒β,其中α、β是句型,都是对α中的最左(右)非终结符进行替换规范推导:即最右推导。
规范句型:由规范推导所得的句型。
句子的二义性(这里的二义性是指语法结构上的。
)文法G[S]的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。
文法的二义性一个文法如果包含二义性的句子,则这个文法是二义文法,否则是无二义文法。
编译原理期末考试题汇总
编译原理期末考试题汇总一、名词解释:(2.5*4分,所有答案均写在答题纸上)1、句子2、编译程序3、翻译程序4、简单优先文法5、算符优先文法6、文法7、句柄8、语言二义性9、最右推导 10、素短语11、文法的二义性 12、规范推导 13、汇编程序 14、规范规约 15、算符文法16、语言二、试写出下述语言的上下文无关文法(5*2分)1、L1={ab n ab n-1|n≥1}2、试给出不以0打头和结尾的正偶数集合的上下文无关文法.3、L1={wcw R|wє(0|a)*, w R是W的反置},例如W=a000, w R=000a4、L(G)={a2m b m│m≥1}5、不以0打头的偶正整数集合6、L2=写一个文法使其语言为奇数集,且每个奇数不以0开头。
7、L1={ a n b m c| n≥0,m>0 }三、填空(1*12分)1、编译程序的开发常常采用自展,自编译,移植,交叉编译技术。
2、编译过程划分为词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成六个阶段。
3、多数程序设计语言的词法都能用正规文法来描述,而语法则用上下文无关文法来描述。
4、编译程序各阶段的工作都涉及到表格管理,出错处理。
5、高级语言的语言处理程序分为编译程序和解释程序两种。
编译程序有六个阶段,而解释程序通常缺少目标代码生成和代码优化。
与编译系统相比,解释系统执行速度慢,占用内存多。
6、LL(1)分析法中,第一个L的含义是从左到右进行分析,第二个L的含义是每次进行最左推导,“1”的含义是向输入串中查看1个输入符号。
7、已知文法G(S):S→A0|B1,A→S1|1,B→S0|0,则由此文法产生的只含有四个符号的句子是 0101 , 1010 , 0110 , 1001 ,该文法是Chomsky的 3 型文法。
8、编译过程划分为词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成六个阶段,同时还伴有表格管理,出错处理两个过程。
编译原理重点
编译原理重点第一章1.编译原理所讨论的问题,就是如何把符合人类思维方式的、用文字描述的意愿(源程序)翻译成计算机能够理解和执行的形式(目标程序)。
具体实现从源程序到目标程序转换的程序,被称为编译程序或编译器。
2. 用符号表示的指令被称为汇编指令。
3.汇编指令的集合被称为汇编语言。
4.由汇编语言编写的指令序列被称为汇编语言程序。
5.通用程序设计语言是继汇编语言之后发展起来的应用最广的一类语言。
6.语言分为三个层次:高级语言、汇编语言、机器语言。
高级语言之间的翻译被称为转换或者预处理;高级语言可以直接翻译成机器语言,也可以直接翻译成汇编语言,这两个翻译过程被称为编译;从汇编语言到机器语言的翻译称为汇编;把机器语言翻译成汇编语言或者把汇编语言翻译成高级语言,分别称它们为反汇编和反编译。
7.公认为最早的编译器是50年代末研制的FORTRAN编译器。
8.解释器与编译器的主要区别:运行目标程序时的控制权在解释器而不在目标程序。
9.通用程序设计语言的典型特征之一是抽象,其抽象程度是以程序设计语言所支持的基本结构为特征的,可以大致划分为三种形式:过程、模块(抽象数据类型、ADT)和类。
10.编译器的工作阶段:符号表管理器(词法分析器、语法分析器、语义分析器、中间代码生成器、代码优化器、目标代码生成器)出错处理器。
11. 编译器从左到右扫描输入该语句,首先进行的是此法分析。
词法分析器的输入是源程序,输出的是识别出的记号流。
12.语法分析器以词法分析器返回的记号流为输入构造句子的结构,并以树的形式表示出来,称之为语法树。
13.语义分析器根据语法分析器够早的语法树,进行适当的语义处理。
对于声明语句,进行符号表的查填。
14.编译器生成的目标程序代码的多种形式:汇编语言形式、可重定位二进制代码形式、内存形式。
15.我们把每个阶段将程序完全扫描一遍的工作模式称为一遍扫描。
第二章1.组成语句的基本单元也可根据其在句子中的作用分类,最基本的分类有四类:关键字(保留字)、标示符、字面量、特殊符号。
编译原理期末考试复习知识点
1.Chomsky把文法分为几种类型?什么是文法的二义性?1)分成四种类型,即0型、1型、2型和3型。
(1)0型文法:设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法。
(2)1型文法:若P中的每一个产生式α→β均满足|β|>=|α|,仅仅S->ε除外,则文法G是1型。
(3)若P中的每一个产生式α→β满足:α是非终结符,β∈(VN∪VT)*,则此文法称为2型的。
(4)若P中的每一个产生式的形式都是A→aB或A→a,其中A和B都是非终结符,a∈VT*,则G是3型文法。
2)如果文法G中的某个句子存在不只一棵语法树,则称该句子是二义性的。
如果文法含有二义性的句子,则称该文法是二义性的2. 简述DFA与NFA的区别:DFA每次输入只对应一个结果,而NFA的依次输入可能对应多个结果,形成一个结果集。
3.什么是算符文法?并举例说明设有文法G,如果G中没有形如A->…BC…的产生式,其中B,C为非终结符,则称G为算符文法。
例如:对于表达式的二义性文法E->E|E-E|E*E|E/E|E↑E|(E)|i 其中任何一个产生式中都不包含两个非终结符相邻的情况,因此该文法为算符文法。
4.什么是3型文法?什么是文法的语言?(1)若P中的每一个产生式的形式都是A→aB或A→a,其中A和B都是非终结符,a ∈VT*,则G是3型文法。
(2)文法的语言:文法是用于描述语言的语法结构的形式规则。
文法描述的语言是该文法一切句子的集合。
一个文法所描述的语言是唯一的。
5. 什么是文法的二义性?给出一个二义性文法实例(1)如果文法G中的某个句子存在不只一棵语法树,则称该句子是二义性的。
如果文法含有二义性的句子,则称该文法是二义性的书上:若一个文法中存在某个句子,有两个不同的最左(最右)推导,则该文法是二义的。
《编译原理》重点知识总结
《编译原理》重点知识总结一、编译器的基本概念1.编译器的定义:编译器是一种将高级语言程序转换为低级语言程序的软件工具。
2.编译器的主要任务:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。
二、词法分析1. 词法分析的任务:将源程序的字符序列转换为有意义的词法单元(token)序列。
2.词法单元的分类:关键字、标识符、运算符、界限符等。
3.词法分析器的实现方法:有限状态自动机(DFA)、正则表达式、词法规则等。
三、语法分析1.语法分析的任务:根据语法规则,将词法单元序列转换为抽象语法树(AST)。
2.语法分析器的实现方法:上下文无关文法(CFG)、递归下降分析、LL(1)分析器、LR分析器等。
四、语义分析1.语义分析的任务:对抽象语法树进行静态语义检查,确定语法结构的含义和约束。
2.语义分析的主要内容:类型检查、作用域分析、常量折叠、中间代码生成等。
五、中间代码生成1.中间代码的定义:介于源程序和目标代码之间的一种抽象表示形式,可以是三地址代码、四元式、虚拟机代码等。
2.中间代码生成的方法:递归下降、语法制导翻译、语法制导的翻译方案等。
六、代码优化1.代码优化的目的:提高程序的执行效率和资源利用率,减小目标代码的体积。
2.常见的代码优化技术:常量传播、代码移动、循环优化、函数内联等。
七、目标代码生成1.目标代码的定义:能够被底层硬件直接执行的机器指令。
2.目标代码生成的方法:模板匹配、基本块划分、寄存器分配等。
八、词法分析器和语法分析器的生成工具1. Flex:用于生成词法分析器的工具。
2. Bison:用于生成语法分析器的工具。
3. Lex:Flex的前身,用于生成词法分析器。
4. Yacc:Bison的前身,用于生成语法分析器。
九、常用的编程语言1. 静态类型语言:C、C++、Java、C#等。
2. 动态类型语言:Python、JavaScript、Ruby等。
3. 函数式编程语言:Lisp、Haskell、Erlang等。
程序设计语言编译原理考试重点
第一章引论1.编译程序分几个阶段,每个阶段的任务是什么?五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。
(如基本字,标识符,常数,算符和界符)。
语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴) (短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。
语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码) 。
代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码。
目标代码生成任务:将中间代码变换成特定机器上的低级语言代码2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。
一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。
源程序中的错误通常分为:语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配…语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配…3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。
编译后端包括编译程序中与目标机有关的那些部分。
4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。
遍可以和阶段相对应,也可无关。
单遍代码不太有效。
遍是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
5.“运算符与运算对象类型不符”属于语义错误6.算法逻辑上的错误属于语义错误第二章高级语言及其语法描述1.程序语言是由语法和语义两方面定义的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 2 3 开410 111 0 13 0 1 2 a a a ,ab bb 第一章 引论1.编译程序分几个阶段,每个阶段的任务是什么?五个阶段:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。
(如基本字,标识符,常数,算符和界符)。
语法分析任务:在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。
语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
代码优化任务:对于代码(主要是中间代码)进行加工变换,以期能够产生更为高效(省时间和空间)的目标代码 。
目标代码生成任务:将中间代码变换成特定机器上的低级语言代码2.表格管理和出错处理:编译各阶段均须维持表格并进行表格管理,建表的技术支持是数据结构,表格的分类、结构、处理方法决定于语言及机器,还有优化措施。
一个好的编译程序应该:全,最大限度发现错误;准,准确指出错误的性质和发生地点;局部化,将错误的影响限制在尽可能小的范围内。
源程序中的错误通常分为 :语法错误,不符合语法(或词法)规则的错误,如单词拼写错误、括号不匹配 ... 语义错误,不符合语义规则的错误,如说明错误、作用域错误、类型不匹配 ...3.前端、后端:编译前端主要由与源语言有关,但与目标机无关的那些部分组成。
编译后端包括编译程序中与目标机有关的那些部分。
4.遍:根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。
遍可以和阶段相对应,也可无关。
单遍代码不太有效。
遍 是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
5.“运算符与运算对象类型不符”属于语义错误6.算法逻辑上的错误属于语义错误7.编译程序:能够把某一种语言程序转换成另一种语言程序,而后者与前者在逻辑上是等价的一种程序。
通常是从高级语言转换成为低级语言。
8.解释程序:它以该语言写的源程序作为输入,但是不产生目标代码,而是边解释边执行源程序本身。
9.诊断编译程序:专门用于帮助程序开发和调试的编译程序。
10.优化编译程序:着重于提高目标代码效率的编译程序。
11.宿主机:运行编译程序的计算机。
12.目标机:运行编译程序所产生目标代码的计算机。
13.交叉编译程序:一个程序产生不同于宿主机的机器代码的程序。
14.可变目标编译程序:如果不需要重新编译程序中与机器无关的部分就能改变目标机,则该编译程序就叫做可变目标编译程序。
PS :世界上第一个编译程序——FORTRAN 编译程序——20世纪50年代 15.编译过程第一阶段:词法分析——词法分析器 1)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),标示符,常熟,算符和界符。
2)单词符号是语言的基本组成成分,是人们理解和编程的基本要素。
3)描述词法规则的有效工具是:正规式和有限自动机 第二阶段:语法分析——(词法)分析器1)任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位,如“短语”、“子句”、“句子”、“程序段”和“程序”等。
通过语法分析,确定整个输入串是否构成语法上正确的“程序”。
2)语法分析所依据的是语言的语法规则。
通常是上下文无关文法描述、3)词法分析是一种线性分析,而语法分析是一种层次结构分析。
第三阶段:语义分析和中间代码产生——语义分析器1)任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
2)对每种语法范畴进行静态语义检查—>进行中间代码的翻译。
3)语义分析所依据的是语言的语义规则,通常使用属性文法描述语义规则。
4)中间代码:一种含义明确、便于处理的记号系统,它通常独立于具体的硬件。
5)中间代码的四元式表示形式。
此外还有三元式、间接三元式、逆波兰记号和树。
第四阶段:优化——优化器1)任务:在于前段产生的中间代码进行加工交换,,以期在最后阶段能产生更为高效(省时间和空间)的目标代码。
2)优化的主要方面有:公共字表达式、优化循环、删除无用代码等等。
3)优化所依据的原则:程序的等价变化原则。
第五阶段:目标代码生成——目标代码生成器1)任务:吧中间代码(或经优化处理后)变换成特定机器上的低级语言代码。
2)形式:绝对指令代码或可重定位的指令代码或汇编指令代码。
16.编译程序的结构语法错误:指源程序中不符合语法(或词法)规则的错误,他们可在词法分析和语法分析时检测出来语法错误:指源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的要在运行时才能检测出来。
通常有:说明错误、作用域错误、类型不一致等遍:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
编译前段:由与源程序有关但与目标程序无关的那些部分组成。
包括词法分析、语法分析、语义分析与中间代码和一些优化工作。
编译后端:编译程序中与目标机有关的那些部分,后端不依赖于源语言而仅仅依赖于中间语言。
集成化的程序设计环境的特点:它将相互独立的程序设计工具集成起来,以使为程序员提供完整的、一体化的支持,从而进一步提高程序开放效率,改善程序质量。
17.T 形图第二章 高级语言及其语法描述 1. 程序语言是由语法和语义两方面定义的。
2.上下文无关文法的定义:四个组成部分:一组终结符号、一组非终结符号、一个开始符号、一组产生式。
一个上下文无关文法G 是一个四元式(VT,VN,S, P ),其中: VT :是非空有限集,它的每个元素是终结符号;VN :是非空有限集,它的每个元素是非终结符号,VT ∩VN=Φ,VT ∪VN=V;S :S ∈VN ,称为开始符号;P :产生式集合(有限),每个产生式形式是{ P->α| P ∈VN , α∈(VT ∪VN)*,S 至少一次为P }; 3.推导、最左推导、最右推导:1、推导:如两个串u0、un ,存在一个串序列u0=>u1=>…=>un ,则我们称这个序列是从u0到un 的一个推导。
U1un :表示从u0出发,经一步或若干步,可推导出un. U1un :表示从u0出发,经0步或若干步,可推导出un.最左推导是指,任何一步α=>β都是对α中的最左非终结符进行替换的。
最右推导是指,任何一步α=>β都是对α中的最右非终结符进行替换的。
4.语法树:在编译中产生语法树是为了语法分析。
5、什么是句型?什么是句子?什么是语言?假定G 是一个文法,S 是它的开始符号。
如果S=> α,则称α是一个句型。
仅含终结符的句型是一个句子。
文法G 所产生的句子的全体是一个语言。
语言是由句子组成的集合,是由一组记号所构成的集合。
6.乔姆斯基把文法分成4种类型,即0型文法、1型文法、2型文法和3型文法。
0型文法也称为短语文法。
1型文法也称为上下文有关文法。
2型文法也称为上下文无关文法。
3型文法也称为正规文法。
与程序语言语法有关的文法是上下文无关文法。
第三章 词法分析1.状态转换图:使用状态转换图是设计词法分析程序的一种好途径,状态转换图是一张有限方向图。
在状态转换图中,结点代表状态,用圆圈表示。
一个状态转换图可用于识别(或接受)一定的字符串。
2.确定的有限自动机(DFA )、非确定有限自动机(NFA )。
五元式:有限状态集合、有穷字母表、转换函数、唯一的初始状态、终止状态集合。
一个确定有限自动机(DFA ) M 是一个五元式:M = (S,∑,δ,s0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑至S 的单值部分映射。
δ(s,a)=s ´意味着:当现行状态为、输入字符为a 时,将转换到下一状态s ´。
我们称s ´为s 的一个后继状s0∈S 是唯一的初态F 是一个终态集(可空)。
一个非确定有限自动机(NFA ) M 是一个五元式:M = (S,∑,δ,S0 ,F) ,其中S 是一个有限集,它的每个元素称为一个状态,∑是一个有穷字母表,它的每个元素称为一个输入字符,δ是一个从S ×∑*至S 的子集的映射,即δ: S ×∑* → 2s ,S0∈S 是唯一的初态,F 是一个终态集(可空)。
3.设有确定的有限自动机DFA M = ({0,1,2,3},{a,b},δ,0,{3}),其中δ为:δ(0,a)=1 δ(0,b)=2 δ(1,a)=3 δ(1,b)=2 δ(2,a)=1 δ(2,b)=3 δ(3,a)=3 δ(3,b)=3 请画出状态转换矩阵和状态转化图。
相应的状态转换矩阵如下表: 对应的状态转换图4.设计一个DFA,要求能够识别∑={0,1}上能被5整除的二 进制数。
5.词法分析的流程 第四章 语法分析——自上而下分析 1.语法分析器的功能:识别语法成分,并作语法检查.2.自上而下语法分析方法遇到的主要问题是回溯和左递归。
3.把一个文法改造成任何非终结符的所有候选式首符集两两不相交的方法是提取公共左因子。
4.LL (1)分析法中,第一个L 表示从左到右扫描输入串,第二个L 表示最左推导。
1表示分析时每步只需向前看一个符号。
5.LL (1)文法的条件:1文法不含左递归2)FIRST(α)∩ FIRST(β) = φ3)对文法中的每个非终结符A ,若它存在算符 左操作数右操作数结果状态 a b 0 1 2 1 3 2 2 1 3 333某个候选首符集包含ε,则 FIRST(A)∩ FOLLOW(A)=Φ。
6. 对下文法,计算每个非终结符的FIRST集合和FOLLOW集合。
E→TE’ E’→+E|ε T→FT’ T’→T|ε F→PF’F’→*F’|ε P→(E)|a|b|∧First(E)= First(T)= First(F)={(,a,b, ∧}First(E’)={+, ε},First(T’)={(,a,b, ∧, ε}First(F’)={*, ε} ,Follow(E)= Follow(E’)={#, )}Follow(T)= Follow(T’)={+,#, )}Follow(F)= Follow(F’)={(,a,b, ∧,+,),#}Follow(P)={*, (,a,b, ∧,+,),#}7.两种实现方法:递归下降分析法、预测分析程序。
第五章语法分析——自下而上分析1. 简述自下而上的语法分析方法:就是从输入串开始,逐步进行“规约”,直至规约到文法的开始符号;或者说从语法树的树叶开始,逐步向上规约,直至规约到根节点。