![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
一口木桶饭
意气风发,挥斥方遒!
展开
-
编译原理(八) 之 正则表达式
概念正则表达式 是一种用来描述正则语言的更紧凑的表示方法比如某个语言L = {a}{a, b} * ( {ε} ∪ ( { . , _ } {a , b} { a, b }* ) )利用正则表达式:r = a (a | b) * (ε | (. | _) (a | b) (a | b)* )正则表达式可以由较小的正则表达式按照特定规则 递归 地构建 , 每个正则表达式r 定义一个语言,...原创 2020-03-27 10:57:55 · 5448 阅读 · 1 评论 -
编译原理(七) 之 CFG的分析树
CFG分析树G: ① E -> E + E, ② E -> E * E, ③ E -> -E ④ E -> (E), ⑤ E -> id根节点的标号为 文法开始符号内部节点表示对一个产生式A -> β 的应用,该节点的标号就是此产生式的左部A, 该节点的子节点的标号从左到右构成了产生式的右部β上图中分...原创 2020-03-27 09:18:38 · 2812 阅读 · 0 评论 -
编译原理(六) 文法的分类
文法分类体系有四种文法1. 0型文法无限制文法, 或者短语结构文法任意a -> b ∈ p ,a中至少包含一个非终结符由0型语法形成的语言称为0型语言2. 1型文法(CSG)上下文有关文法任意a -> b ∈ P, |a| <= |b|产生式的一般形式 a1 A a2 -> a1 β a2 (β != ε)CSG中不包含空串由上下文有关语法形...原创 2020-03-23 11:44:37 · 521 阅读 · 0 评论 -
编译原理(五) 语言的定义
自然语言的文法<句子> -> <名词短语 > <动词短语><名词短语> -> <形容词> <名词短语> <名词短语> -> <名词><动词短语> -> <动词> <名词短语><形容词> -> little<...原创 2020-03-23 10:48:53 · 2106 阅读 · 0 评论 -
编译原理(四) 语言及其文法的基本概念
1.字母表字母表∑是一个有穷符号集合,符号可以是: 字母 数字 标点符号等常见的字母表有二进制字母表 {0 ,1}ASCII字符集Unicode 字符集2.字母表的运算1. 字母表∑1和∑2的乘积∑1∑2 = {ab | a ∈ ∑1, b ∈ ∑2 }{0 ,1} {a, b} = {0a, 0b, 1a, 1b}2.字母表∑的n次幂∑^0 = { ε } 表示空...原创 2020-03-23 09:49:40 · 1010 阅读 · 0 评论 -
编译原理(三)目标代码的生成与优化基本概念
前边产生中间代码之后,后边的事儿就交给了后端原创 2020-03-23 08:31:37 · 1229 阅读 · 0 评论 -
编译原理 (二)词法分析、语法分析、语义分析以及中间代码生成器的基本概念
1.词法分析词法分析的过程中,源代码程序被输入到了一个叫做扫描器的东西中,扫描器的任务就是进行词法分析。他应用了一种叫做有限状态机的算法把源代码分割成一个一个的记号,举例比如array[index] = (index + 4) * (2 + 3)这行代码,经过扫描就会变成如下的一个个记号:记号类型array标识符[左方括号index标识符]右方括号...原创 2020-02-17 11:29:05 · 8476 阅读 · 0 评论 -
编译原理 (一) 编译和编译系统的结构
我们知道计算机设计语言有机器语言、汇编语言和高级语言之分。 机器语言 则是给计算机看的语言,比如C706 0000 0002. 前边的C706是该机器指令的操作码,表示移动操作(move),后边的0000 0002表示操作数,表示把0002这个数移动到地址0000的位置。 可以发现简直不是人学的东西,全都是数字。 汇编语言 在机器语言的基础上,添加了助记符,使得代码十分容易让人...原创 2020-02-16 23:29:29 · 1482 阅读 · 0 评论