
编译原理
编译原理
肉丸不肉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编译原理-代码优化和代码生成
一、常用的代码优化方法优化的分类:机器无关优化 :针对中间代码机器相关优化 :针对目标代码局部代码优化 :单个基本块范围内的优化全局代码优化 :面向多项基本块的优化常用的优化方法:删除公共子表达式删除无用代码常量合并代码移动强度削弱删除归纳变量二、代码生成目标代码生成阶段的任务是:将此前的中间代码转换成特定机器上的机器语言或汇编语言,这种转换程序便被称...原创 2020-03-30 19:43:52 · 985 阅读 · 0 评论 -
编译原理-运行存储分配
运行时内存的划分各区段功能说明:1、程序代码区:存放函数体的二进制代码。2、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。3、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放。4、堆区(heap): 一般由程序员分配释...原创 2020-03-30 19:31:11 · 1515 阅读 · 0 评论 -
编译原理-中间代码的生成
一、中间代码简介中间代码应具备的特性:1)便于语法制导翻译2)既与机器指令的结构相近,又与具体机器无关使用中间代码的好处:1)一是便于编译器程序的开发和移植2)二是代码进行优化处理中间代码的主要形式:后缀式、树、三地址码等最基本的中间代码形式是树????;最常用的中间代码形式是三地址码,它的实现形式常采用四元式形式。符号表是帮助声明语句实现存储空间分配的重要数据...原创 2020-03-30 19:17:46 · 8281 阅读 · 0 评论 -
编译原理-语义分析
一、语法制导翻译简介语法与语义的关系语法是指语言的结构、即语言的“样子”;语义是指附着于语言结构上的实际含意,即语言的“意义”.一个语法上正确的句子,它所代表的意义并不一定正确。语义分析的作用• 检查结构正确的句子所表示的意思是否合法;• 执行规定的语义动作,如:表达式求值、符号表的查询/填写、中间代码生成等应用最广的语义分析方法是语法制导翻译,他的基本思想是将语言结构的...原创 2020-03-30 19:02:31 · 3185 阅读 · 0 评论 -
编译原理-语法分析
语法分析的双重含义:语法规则:上下文无关文法(子集:LL文法或LR文法)语法分析:下推自动机(LL或LR分析器)、自上而下分析、自下而上分析一、语法分析的若干问题许多编译器,特别是由自动生成工具构造的编译器,往往其前端的中心部件就是语法分析器(1)语法分析器的作用根据词法分析器提供的记号流,为语法正确的输入构造分析树(或语法树)检查输入中的语法(可能包括词法)错误,并调用出错...原创 2020-03-27 11:26:53 · 5498 阅读 · 0 评论 -
编译原理-词法分析
一、词法分析中的若干问题(1) 记号、模式与单词单词的分类:关键字(保留字)、标识符、字面量、特殊符号模式(pattern):产生/识别单词的规则记号(token):按照某个模式(或规则)识别出的元素(一组)单词(lexeme):被识别出的元素的值(字符串本身) ,也称为词值(2) 词法分析器的作用与工作方式词法分析器的作用:1> 识别记号并交给语法分析器(根据模式识别记号...原创 2020-03-26 22:34:05 · 1700 阅读 · 0 评论 -
编译原理基本概念和术语
一、字母表(有穷符号集合)1.1 字母表定义字母表也即符号集,用∑表示,它是一个包含各种符号的有穷非空集合。以汉语为例,汉语字母表就是各种汉字、数字、标点符号的集合;以英语为例,英语字母表就是各种字母、数字、标点符号的集合…那么到了编程,字母表就可能是字母、数字、各种专用符号和保留字了。1.2 字母表上的运算:乘积n次幂正闭包克林闭包二、符号串/串2.1 符号串相关...原创 2020-03-26 21:00:25 · 8067 阅读 · 2 评论 -
编译原理绪论
前言:近期正在学b站上哈工大的编译原理课,但是越学越崩溃。所以干脆停止看视频,慢下来汇总、理清知识。我搜索了几篇关于编译原理的文章,读完后提取出有用的知识。当做入门吧,争取搞清why。[若侵权,请联系我删除~]“语言是怎么诞生的?为什么不能用一个语言解决所有问题?”追寻程序设计语言的本质从现实的方面来说,编译原理学过之后的益处(不考虑最后都没有入门的情况)包括:1、可以更加容易的理...原创 2020-03-18 22:52:23 · 665 阅读 · 0 评论 -
识别浮点常量问题
Problem Description编译器在对程序进行编译之前,首先要进行语法分析。通常,程序被分解成若干个小单元,然后和语言的语法模式进行匹配。在分析表达式的时候,变量的类型在变量声明的时候就决定了;而常量的类型需要从常量的形式来判断。假设你是自动编译器(ACM)开发小组的一员,负责Pascal语言编译器的开发。你的任务是分析程序分解模块送来的文件,判断其中包含的字符串是否合乎语法的Pas...原创 2019-02-20 10:36:25 · 189 阅读 · 0 评论 -
第三章——词法分析在线测试
1、字母表为{a,b},则所有以b开头的后面跟若干个ab的串的正规式表示为 。b(ab)b(a|b)*b(ab)+bab*[参考答案] b(ab)+[我的答案] b(ab)+这题有歧义,“若干个”应该可以包括0个,答案应该为:b(ab)*但是老师的考点应该是 +和*的区别⑧所以这题就只能当做若干个是至少一个2、扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含...原创 2018-10-16 15:03:31 · 1222 阅读 · 0 评论