编译原理
Mr成文
加油呀
展开
-
【编译原理】第一章引论
1.1语言处理器编译器:将源语言翻译成目标语言。解释器: 直接利用用户提供的输入执行源程序中指定的操作。1.2一个编译器的结构由两个部分组成:分析部分和综合部分。分析部分:把源程序分解成多个组成部分,并在这些要素之上加上语法结构。程序语法出错在这个阶段检测并反馈。产生符号表,并将符号表和中间表示形式一起传送给综合部分。综合部分:根据前段传回来的信息构造目标程序。通常分析部...原创 2018-09-19 17:17:21 · 175 阅读 · 0 评论 -
【编译原理】第三章 词法分析(上)
文章目录3.1词法分析器的作用词法分析器的作用将词法分析和语法分析阶段分开的原因:3.2输入缓冲3.2.1 缓冲区对3.2.2哨兵标记3.3词法单元的规约3.3.1串和语言3.3.2语言上的运算3.3.3正则表达式3.3.4正则定义3.3.5正则表达式的扩展3.4词法单元的识别3.4.1状态转换图3.4.2保留字和标识符的识别3.1词法分析器的作用词法分析器的作用①生成词素。②过滤掉注释和...原创 2018-09-20 13:15:44 · 1570 阅读 · 0 评论 -
【编译原理】第三章 词法分析(下)
3.5词法分析器生成工具Lexlex中的冲突解决:当输入的多个前缀与一个或多个模式匹配时,Lex用如下规则选择正确的词素。①总是选择最长的前缀。②如果最长的前缀与多个模式匹配,总是选择在lex程序中先被列出的模式。3.6 有穷自动机分为两类:①不确定的有穷自动机(NFA)②确定的有穷自动机(DFA)3.6.1不确定的有穷自动机组成:一个有穷的状态集合S一个输...原创 2018-09-27 23:15:49 · 444 阅读 · 0 评论 -
【编译原理】第三章词法分析
基本概念词法单元、模式、词素输入缓冲缓冲区对哨兵标记词法单元规约串;缀,子串,真缀,真子串语言运算:并、连接、闭包、正闭包正则表达式运算定理定义及不同表示方法DFA定义NFA定义图表状态转换表状态转换图各种转化正则表达式转化为NFANFA转化为DFAϵ\epsilonϵ-closure()集合DFA转化为状态...原创 2018-10-27 16:03:48 · 276 阅读 · 0 评论 -
【编译原理】把正规式转化为DFA
包括三个步骤:把正规式转化为NFA把NFA转化为DFA最小化DFA下面依次来看:1.把正规式转化为NFA用下面三条规则即可:来看一个例子到底怎么使用。...转载 2018-12-26 15:30:05 · 24147 阅读 · 5 评论 -
【编译原理】语法分析之LL(1)方法
前段时间为了做编译器,猛啃了一下编译原理。语法分析部分用的是比较简单上手的LL(1), 自认为LL(1)的理论部分理解得不错,在这里写出来跟大家share一下。关于什么是LL(1),就不赘述了,书上也说得很清楚,就是从左向右扫描输入,然后产生最左推导(就是每次都把最左边的非终结字符用产生式代替)。(一)为什么我们需要First集合比如有产生式 A-> + T | - P , 当...转载 2018-12-26 20:13:18 · 2424 阅读 · 0 评论 -
【编译原理】第四章语法分析
文法分类0型、1型、2型、3型上下文无关文法(2型文法)终结符非终结符开始符号产生式推导最左推导最右推导语法分析树推导和语法分析树之间的关系上下文无关文法和正则表达式之间的关系消除二义性的方法:添加一条规则(无确定的检验方法)消除左递归的方法消除回溯(提取左公因子)语法分析方法:自顶向下递归下降法–需要回溯LL(1)LL(1)LL...原创 2019-05-30 18:10:03 · 305 阅读 · 0 评论