
编译原理
文章平均质量分 96
_Equinox
分享学习过程
展开
-
九、运行时环境,《编译原理》(本科教学版),第2版
前端我们介绍了词法分析-语法分析-语义分析然后又介绍了中间端的中间代码生成和中间代码优化,它其实是和机器无关的现在到后端,我们就要考虑目标机器了,因为目标程序运行需要一个环境。编译器为目标程序创建并管理一个运行时环境,目标程序运行在其中主要是运行时的存储空间管理各种对象的存储位置和空间分配访问变量的机制过程间的连接参数传递机制过程或函数是模块程序设计的主要手段,也是节省程序代码和扩充语言的主要途径过程定义。原创 2024-11-27 16:09:11 · 729 阅读 · 0 评论 -
八、代码优化,《编译原理》(本科教学版),第2版
代码优化应该处在编译的什么位置?可以在语义分析之前吗?else 分支中的 printf(2) 显然是有类型错误的,因为 2 并非字符串程序员可能希望编译阶段检测出该错误,但是代码优化会将else 分支优化掉,这样导致后续语义分析检查不出这个错误显然,代码优化至少应该放在语义分析后面我们经过语义分析后得到一棵抽象语法树我们可以在抽象语法树上进行早期优化然后可以在中间表上上进行中间代码优化然后可以在。原创 2024-11-26 16:01:22 · 1130 阅读 · 0 评论 -
七、中间代码与程序分析,《编译原理》(本科教学版),第2版
三地址码中,一条指令的右侧最多有一个运算符。这也是为什么,前面三地址码只完成一个动作,不再有复合动作。s -> x = n // 常数赋值| x = y + z // 二元运算| x = θ y // 一元运算| x = y // 数据移动| x[y] = z // 内存写| x = y[v] // 内存读| x = f(x1, ..., xn) // 函数调用| Cjmp(x1, L1, L2) // 条件跳转| jmp L // 无条件跳转。原创 2024-11-26 15:55:12 · 1115 阅读 · 0 评论 -
六、代码生成,《编译原理》(本科教学版),第2版
前端对源程序进行进行分析并产生中间表示,后端则在此基础上生成目标代码。前面几章介绍了编译器前端的主要内容,接下来会进入中间端和后端的部分。中间端和后端的大致架构抽象语法树经过若干次中间表示和翻译,得到汇编代码。这是一个抽象层次逐渐降低的过程。上世纪七八十年代时的做法是仅通过一次代码生成然后得到汇编,这样的做法由于抽象层次跨度太大,所以实现困难。现代编译器的选择往往是经过多次生成而向目标代码逐渐靠近。原创 2024-11-18 23:02:06 · 716 阅读 · 0 评论 -
五、语法制导翻译与抽象语法树,《编译原理》(本科教学版),第2版
Antlr-v4 是基于 LL(*)算法,这里介绍下 基于LR(1)的 yaccYacc 语言很简单,分为三大块:下面写一个简单的检测表达式输入的文法我们 通过 bison + 文件名来进行编译发现报错:出现二义性我们强制左结合优先:发现可以编译,并且生成了 test.tab.ctest.tab.c 是一个长达上千行,自动生成的一个LR(1)语法分析器我们利用gcc 去编译 test.tab.c:再次报错因为我们没有实现 yylex 和 yyerror再次重新编译原创 2024-11-10 16:40:54 · 1156 阅读 · 0 评论 -
四、语义分析,《编译原理》(本科教学版),第2版
语义分析的任务是什么?原创 2024-11-27 16:05:42 · 1106 阅读 · 0 评论 -
三、语法分析,《编译原理》(本科教学版),第2版
终结符号(T)是组成串的基本符号。术语“词法单元名字”是“终结符号”的同义词。非终结符号(N)是表示串的集合的语法变量。前面的 stmt 和 expr 是非终结符号。非终结符号表示的串集合用于定义由文法生成的语言。非终结符号给出了语言的层次结构,而这种层次结构是语法分析和翻译的关键。在一个文法中,某个非终结符号被指定为开始符号(S)。这个符号表示的串集合就是这个文法生成的语言。按照惯例,首先列出开始符号的产生式。一个文法的**产生式(P)**描述了将终结符号和非终结符号组合成串的方法。A∈N。原创 2024-10-19 21:09:56 · 828 阅读 · 0 评论 -
二、词法分析,《编译原理》(本科教学版),第2版
POS : '+';NEG : '-';EQ : '=';NE : '<>';LT : '<';LE : '<=';GT : '>';GE : '>=';IF : 'if';;([eE] [+-]?DIGITS)?;原创 2024-09-27 12:08:22 · 1264 阅读 · 0 评论 -
一、编译引论,《编译原理》(本科教学版),第2版
它同时。原创 2024-09-06 16:24:07 · 910 阅读 · 0 评论