编译原理
雕刻刀
这个作者很懒,什么都没留下…
展开
-
P - 简单的代码生成程序
Description 通过三地址代码序列生成计算机的目标代码,在生成算法中,对寄存器的使用顺序为:寄存器中存有 > 空寄存器 > 内存中存有 > 以后不再使用 > 最远距离使用 Input 单组输入,给定输出的三地址代码的个数和寄存器的个数.所有的变量为大写字母,寄存器的数量不超过9 Output 参照示例格式输出,不需要将最后的寄存器中的值写回内存 不再使用变量不用写回内存 Sample Input 4 2 T:=A-B U:=A-C V:=T+U W:=V+U Output原创 2020-12-22 21:01:19 · 247 阅读 · 0 评论 -
N - DAG优化
Description 大家都学过了代码优化,其中有一个DAG优化,这次我们就练习这个操作。 Input 输入第一行为一个整数n(n < 100),表示该组输入的表达式的个数 之后n行为表达式,每个变量为一个字母,表达式仅包括二元运算 + - * / 例如:A=B+C Output 通过构造DAG图,进行代码优化,只需要保留AB,删除无用变量,删除变量时,尽量保留最早出现的变量。 PS:保证AB的值不同 Sample Input 3 A=B+C B=B+B A=C+C Output B=B+B A=原创 2020-12-22 21:00:09 · 264 阅读 · 0 评论 -
M - 翻译布尔表达式
Description 大家都学过了布尔表达式的翻译,其中有一个拉链-回填技术,这次我们就练习这个技术。 Input 输入为一行字符串,例如: a < b or c < d and e < f 每个符号都用空格间隔。 其中逻辑运算符包含 and 和 or , 关系运算符包含 < 、> 、<= 、 >= 、== 、 != 。 Output 假链跳到0,真链跳到1,表达式序号从100开始排。 Sample Input a < b or c < d and e原创 2020-11-16 09:34:44 · 437 阅读 · 0 评论 -
小C语言--词法分析程序
Input 输入一个小C语言源程序,源程序长度不超过2000个字符,保证输入合法。 Output 按照源程序中单词出现顺序输出,输出二元组形式的单词串。 (单词种类,单词值) 单词一共5个种类: 关键字:用keyword表示 自定义标识符:用identifier表示 整数:用integer表示 界符:用boundary表示 运算符:用operator表示 每种单词值用该单词的符号串表示。 #include <iostream> #include <string> using name原创 2020-09-20 11:22:54 · 196 阅读 · 0 评论 -
识别浮点常量问题
Input 输入一个小C语言源程序,源程序长度不超过2000个字符,保证输入合法。 Output 按照源程序中单词出现顺序输出,输出二元组形式的单词串。 (单词种类,单词值) 单词一共5个种类: 关键字:用keyword表示 自定义标识符:用identifier表示 整数:用integer表示 界符:用boundary表示 运算符:用operator表示 每种单词值用该单词的符号串表示。 #include <iostream> #include <string> using name原创 2020-09-13 18:08:15 · 809 阅读 · 0 评论