编译原理-题型分享

关于几类题型:

1.词法分析:文法--语言(正规集)--正规式--NFA--DFA的转换

1.1)DFA<-->正规式

1.2)语言L-->(正规式-->NFA)-->DFA

1.3)语言L(L对应集合 / L的某种描述)-->文法

对应的answer:

2.代码优化:根据基本块出口时的活跃变量,对四元序列优化and 画DAG图

3.中间代码生成:程序翻译成四元式序列

4.语法分析:

4.1)可规约串的识别:给定句型,求短语/直接短语/句柄(即最左直接短语)/素短语/最左素短语:

4.2)语法分析(自顶向下)--LL(1)文法的一系列题目:

4.2.1)消除文法左递归+回溯;

4.2.2)构造全体非终结符的FIRST,FOLLOW集合

4.2.3)构造预测分析表and  LL(1)文法的判断

4.3)语法分析(自下向上)

4.3.1)firstvt,lastvt集合计算,构造算符优先关系表,算符优先文法判断

4.3.2)根据LR分析表对输入串作过程分析

5.一些小思考,抛砖引玉:

1)NFA->DFA确定化时,不列入空集会如何?

采用子集法中,每当出现未列入的集合时,就列入到第一列中作为一个状态。那么若出现空集,即便作为状态,走a弧还是b弧都是回到自己(空集),那去掉会怎么样?

2)文法二义性的问题

这个没有定式,只能说按经验总结。

2.1)几类文法已知是肯定无二义的:LL(1),LR(k),算符优先文法;所以通过判断是否满足对应文法的条件来判断(这是个充分不必要条件)

2.2)几类产生式,如对称形(有S->SaS,或S->SS),包括形(S->aSb|Sb 或S->aSb|aS);

2.3)普遍的说,对一个句型找到两颗不同的语法树即可(通常是判断其最左和最右推导这两颗)

posted @ 2023-12-03 10:22  geekChen01  阅读(0)  评论(0)    收藏  举报  来源