编译原理
文章平均质量分 56
代码欢乐豆
优快云平台会将流量好的博文自动设置为VIP文章,非本人设置,如需获取VIP博文可加QQ群:700363077,不定时更新博客上上传过的资料
博主专栏:
①AcWing专栏:根据AcWing的算法题目顺序,每道题目进行注释解析
②sdut系列专栏:已包含程序设计基础I、程序设计基础II、数据结构、Linux、Python、数据库系统概述、Hadoop、NoSQL、计算机网络、大数据库导论、爬虫、软件工程、UML、Java等多门课程的平时实验和期末题库
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P - 简单的代码生成程序
通过三地址代码序列生成计算机的目标代码,在生成算法中,对寄存器的使用顺序为:寄存器中存有 > 空寄存器 > 内存中存有 > 以后不再使用 > 最远距离使用。单组输入,给定输出的三地址代码的个数和寄存器的个数.所有的变量为大写字母,寄存器的数量不超过9。参照示例格式输出,不需要将最后的寄存器中的值写回内存。不再使用变量不用写回内存。原创 2025-12-02 09:59:47 · 266 阅读 · 0 评论 -
O - DAG优化
通过构造DAG图,进行代码优化,只需要保留AB,删除无用变量,删除变量时,尽量保留最早出现的变量。之后n行为表达式,每个变量为一个字母,表达式仅包括二元运算 + - * /大家都学过了代码优化,其中有一个DAG优化,这次我们就练习这个操作。输入第一行为一个整数n(n < 100),表示该组输入的表达式的个数。PS:保证AB的值不同。原创 2025-12-02 09:58:47 · 289 阅读 · 0 评论 -
N - 翻译布尔表达式
其中逻辑运算符包含 and 和 or , 关系运算符包含 < 、> 、<= 、 >= 、== 、!大家都学过了布尔表达式的翻译,其中有一个拉链-回填技术,这次我们就练习这个技术。输入为一行字符串,例如: a < b or c < d and e < f。假链跳到0,真链跳到1,表达式序号从100开始排。每个符号都用空格间隔。原创 2025-12-02 09:57:29 · 356 阅读 · 0 评论 -
M - LR(1)文法
已知文法G[S]的表达式求文法的LR(1)的项目集和Go函数.要求使用广度优先搜索,同时按照字典序进行转换,以保证项目集的序号正确.输出文法的项目集和Go函数,参考示例中的格式。单组输入,当输入一个@时输入结束.规定:文法S的拓广文法为$->S。注意: 在输入中以@代表空.原创 2025-10-18 16:30:34 · 219 阅读 · 0 评论 -
L - LL(1)文法系列(二)预测分析表
第一行输入一个n(n<10),表示表达式的个数,接下来n行,每行一个表达式。终结符和非终结符的个数都小于10。现在我们规定文法G[S]中每个表达式只包含一个语句,也就是说不会含有S->A|B这样的表达式。已知文法G[S]的表达式,计算文法的预测分析表。在文法G[S]中使用’@’代表空。按照终结符和非终结符输入的顺序输出。’#’作为非终结符的最后一个。按照示例进行输出,使用\\t进行格式控制。原创 2025-10-18 16:29:40 · 223 阅读 · 0 评论 -
K - LL(1)文法系列(三)预测分析程序
第一行输入一个n(n < 10),表示表达式的个数,接下来n行,每行一个表达式。终结符和非终结符的个数都小于10。按照示例进行输出(从左到右按照栈、输入缓冲区、输出结果的顺序打印),使用\t进行格式控制,保证输入串合法。现在我们规定文法G[S]中每个表达式只包含一个语句,也就是说不会含有S -> A|B这样的表达式。已知文法G[S]的表达式,通过预测分析表,对输入串进行分析。在文法G[S]中使用’@’代表空。最后一行输入字符串,长度小于20,输入串以#结尾。为方便表示,将输入串翻转,在当前串中输出。原创 2025-10-18 16:28:54 · 164 阅读 · 0 评论 -
J - LL(1)文法系列(一)first集和follow集
现在我们规定文法G[S]中每个表达式只包含一个语句,也就是说不会含有S->A|B这样的表达式。行,每行一个表达式。终结符和非终结符的个数都小于10。按照终结符和非终结符输入的顺序输出。的表达式,计算文法中终结符的。第一行输入一个n(n<10),表示表达式的个数,接下来n。每个非终结符后都有空格。原创 2025-10-18 16:27:53 · 220 阅读 · 0 评论 -
I - 算符优先系列之(三)输入串分析
步骤的标号从“1”(无引号)开始,规约时规定将可归约的项规约成非终结符“N”(无引号),当分析串分析成功时在移进或规约组显示“jieshou”(无引号)第一行输入一个n,表示表达式的个数,接下来n行每行一个表达式(记得还有一个要在自己程序中添加的拓展文法哦),接下来第n+2行为输入串。已知文法G[S]的表达式和输入串,求输入串的分析过程表。输出的分析过程表从左到右分为6组,依次是步骤,栈,优先关系,当前符号,剩余输入串,移进或规约。根据上述的格式,输出输入串分析表(输出的格式用水平制表符\t)原创 2025-10-18 16:26:32 · 232 阅读 · 0 评论 -
H - 算符优先系列之(二)算符优先关系表
第一行输入一个n,表示表达式的个数,接下来n行每行一个表达式(记得还有一个要在自己程序中添加的拓展文法哦)学过编译原理的菊苣们都知道算符优先文法,作为一个有点深度的分析方法,我们怎么能只止步于理论呢,实践才是王道哦。已知文法G[S]的表达式,求算符优先关系表。表达式算符优先关系表中从左到右(从上到下)的顺序为从表达式文法中从左到右从上到下的顺序即为。根据上述的格式,输出算符优先关系表(输出的格式用水平制表符\t)S`->#S#(拓展文法,不是题目给出的文法)原创 2025-10-18 16:24:16 · 198 阅读 · 0 评论 -
G - 算符优先系列之(一)Firstvt和Lastvt集
已知文法G[S]的表达式,计算G[S]的Firstvt和Lastvt。因为某些特殊的原因,我们在这规定一下输入输出格式。学过编译原理的菊苣们都知道算符优先文法,作为一个有点深度的分析方法,我们怎么能只止步于理论呢,实践才是王道哦。对于输出首先输出FIRSTVT集然后输出LASTVT集,对于各自的集合的的输出按照非终结符从上向下的方式。第一行输入一个n,表示表达式的个数,接下来n行,每行一个表达式。根据上述的格式,输出文法的Firstvt和Lastvt集合。Firstvt[S]:非终结符+空格的形式。原创 2025-10-18 16:10:05 · 188 阅读 · 0 评论 -
F - 算符优先分析
E→E+T |TT→T*F |FF→(E) | i该表达式文法是算符优先文法,其算符优先分析表为:注意:构造算符优先分析表前,请先拓广文法,例如引入非终结符Q,令Q→#E#。Input输入数据有多行。第一行为一个整数n(n<=50),代表文法中产生式的个数,其中不包括拓广文法增加的产生式。接下来的n行,每行给出一个产生式。最后一行给出待分析的输入串,长度不超过50个符号。Output要求输出该文法的算符优先分析表,输出格式请参考上面的表格。原创 2025-10-18 16:08:20 · 544 阅读 · 0 评论 -
编译原理机测客观题(7)优化和代码生成练习题
全局优化(跨基本块优化):全局公共子表达式消除、复制传播、死代码消除、函数内联。局部优化(基本块内优化):常量传播、常量折叠、公共子表达式消除、代数化简。循环优化包括:代码外提、强度削弱、删除归纳变量、循环展开、循环合并。3、如果a→b是程序流图中的一条边,则由这条回边构成的循环由。2、在一个基本块内,可实行3种优化方法,即合并已知量、4、关于必经结点的二元关系,下列叙述中不正确的是(4、采用无环有向图(DAG),可以实现的优化有。1、根据优化所涉及的范围,可将优化分为。2、下列优化中,属于循环优化的有。原创 2025-10-18 16:05:01 · 758 阅读 · 0 评论 -
编译原理机测客观题(6)运行时存储组织练习题
c. 在编译阶段对源程序中的数组、变量、参数等进行分配,在运行时这些数组、变量、参数的地址可根据需要改变。b. 在编译阶段对源程序中的数组、变量、参数进行分配。在运行阶段对源程序中的数组、变量、参数等进行分配。a. 动态存储 b. 栈式存储。4、在活动记录中,动态链记录的是( )。2、在编译方法中,动态存储分配的含义是。b. 递归 c.归并 d. 快速分配。d. 动态数组 e. 静态数组。a. 定义新的活动记录的SP。a. 数组 b. 指针变量。定义新的活动记录的TOP。d. 局部数组的内情变量。原创 2025-10-13 11:21:43 · 450 阅读 · 0 评论 -
编译原理机测客观题(5)语义分析中间代码练习题
C 便于优化处理,也便于表的更动 D 便于表的更动,也节省存储空间。A 不便于优化处理,但便于表的更动 B 不便于优化处理,但节省存储空间。A 继承属性 综合属性 B 抽象属性 综合属性 C传递属性 抽象属性。7、文法符号的属性有两种,一种称( ),另一种称为( )。4、表达式(┓A∨B)∧(C∨D)的逆波兰表示为( )。二、请给出表达式a+b*c+(a+b)/d的三地址代码表示。2、四元式之间的联系是通过( )实现的。5、四元式表示法的优点为( )。原创 2025-10-13 11:20:49 · 640 阅读 · 0 评论 -
编译原理机测客观题(4)LR分析练习题
7、设有一个LR(0)项目集I={X->α. bB B->α.},则该项目集 ( )。4、如果该文法是LR(1)文法,请给出输入串abab#的分析过程。⑵ 给出句型((T,S),a)的短语、直接短语、句柄。⑵ 给出句型((TbS)ba)的短语、直接短语、句柄。4、如果该文法是SLR(1)文法,请给出输入串ab#的分析过程。2、请判断该文法是否为SLR(1)文法,如果是请说明理由。2、请判断该文法是否为LR(1)文法,如果是请说明理由。3、如果该文法是SLR(1)文法,请构造相应的分析表。原创 2025-10-13 11:19:30 · 1061 阅读 · 0 评论 -
编译原理机测客观题(3)自顶向下语法分析练习题
第四章 自顶向下语法分析练习题。原创 2025-10-11 17:51:19 · 375 阅读 · 0 评论 -
编译原理机测客观题(2)词法分析
A (0|1)*11(0|1)* B (01) *11 (01) * C (0|1)*(1|1)(0|1)* D 以上答案均不是。(x*表示x的方幂)11、为正规式(a|b)*a(a|b)构造一个非确定有限自动机,如下图所示,请问。已知一非确定优先自动机如图所示,有一状态子集I={X,A},则状态集I的闭包=A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符。A.( ) 单词的种别编码 B.( ) 单词在符号表中的位置。C.句子 D.句型。原创 2025-10-11 17:48:54 · 846 阅读 · 0 评论 -
编译原理机测客观题(1)绪论、文法与语言
31、文法G:E->E-F-E|k F->F/k|k ,句子k-k/k-k的最右推导为: E=>E-F-E=>( )=>k-k/k-k。4. 文法 G[N]= ( {b} , {N , B} , N , {N→b│ bB , B→bN} ),该文法所描述 的语言是C。A.( ) ① 和 ③ B.( ) ② 和 ③ C.( ) ③ 和 ④ D.( ) ③。A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法。原创 2025-10-11 17:42:01 · 935 阅读 · 0 评论 -
E - 表达式语法分析——预测分析法
预测分析法是自顶向下分析的一种方法,一个预测分析程序是由三个部分组成:(1) 预测分析程序(2) 先进后出栈(3) 预测分析表现给出表达式文法:E→TGG→+TG | εT→FSS→*FS | εF→(E) | i该表达式文法是LL(1)文法,其预测分析表为:请根据该预测分析表构造预测分析程序,完成对表达式的语法分析,对给定的输入串,判断其是否为合法表达式,给出所使用的产生式序列。Input给定输入串(长度不超过50个符号,以#号结束,符号保证是终结符或#)。原创 2025-06-24 09:10:38 · 455 阅读 · 0 评论 -
(机测重点)D - 表达式语法分析——递归子程序法
递归子程序法是一种确定的自顶向下语法分析方法,要求文法是LL(1)文法。它的实现思想是对应文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时能够按LL(1)形式唯一地确定选择某个候选式进行推导。请根据下面的表达式LL(1)文法,构造递归子程序,完成对表达式的语法分析。表达式文法如下:E→TGG→+TG | εT→FSS→*FS | εF→(E) | i。原创 2025-06-24 08:59:50 · 573 阅读 · 0 评论 -
C - 小型Basic编译器问题
编写一个TinyBasic语言的解释程序,对于任何一个给出的正确的TinyBasic语言的程序,你的程序能运行它并得到正确的结果。那么,怎样的TinyBasic的程序叫做正确的呢?输入数据只有一组,包含一个程序,没有多余的空行,每一行为一条语句,具体要求按上面的解释。如果表达式的值为0跳过下一行,执行下一行的下一行。<表达式>不需要是一个常量;<表达式>的值是程序中的有效行号。PRINT <变量名>=<值>的格式打印变量的值。(1)每一行的TinyBasic程序都是下面这样的形式(所有出现的字母均为大写)原创 2025-06-24 08:57:19 · 300 阅读 · 0 评论 -
B - 识别浮点常量问题
Pascal语言对浮点常量的语法要求是:一个浮点常量除了十进制数码之外,必须带有一个小数点或一个指数(紧接在字母e或E之后,在正式文档中也被称为比例因子)。空格也许会出现在浮点常量的前后,但不会出现在浮点常量中间。在分析表达式的时候,变量的类型在变量声明的时候就决定了;而常量的类型需要从常量的形式来判断。你的任务是分析程序分解模块送来的文件,判断其中包含的字符串是否合乎语法的Pascal浮点常量。如果输入文件中的字符串是Pascal浮点常量,请输出字符串“YES”,否则输出字符串“NO”。原创 2025-05-15 15:16:51 · 456 阅读 · 0 评论 -
小C语言--词法分析程序
7. < if语句>→< if关键字>(<表达式>)<复合语句>|(<表达式>)<复合语句>< else关键字><复合语句>6. <语句>→< if语句>|< while语句>|< for语句>|<复合语句>|<赋值语句>15. <算数表达式>→<算数表达式>+<项>|<算数表达式>-<项>|<项>18. <标识符>→<字母>|<标识符><字母>|<标识符><数字>2. <声明序列>→<声明序列><声明语句>|<声明语句>|<空>16. <项>→<项>*<因子>|<项>/<因子>|<因子>原创 2025-05-15 15:15:19 · 496 阅读 · 0 评论
分享