
编译原理
antRain
这个作者很懒,什么都没留下…
展开
-
语法分析之LR0文法
打造简单的编译器(二)——语法分析(LR0文法)#include<iostream>#include<vector>#include<map>using namespace std;typedef char grammarType;grammarType start, S; //开始符号,S用来作为输入map<...原创 2019-12-11 19:00:19 · 6099 阅读 · 1 评论 -
编译原理实验:中间代码生成——逆波兰表达式
编译原理实验:中间代码生成——逆波兰表达式逆波兰表达式测试逆波兰表达式运算对象写在前,运算符写在后(后缀表示形式)例如:a+b →\rightarrow→ ab+ (a+b)c →\rightarrow→ ab+c a+bc →\rightarrow→ abc+ a=bc+bd →\rightarrow→ abcbd+=优点:易于计算机处理利用栈,将扫描到的运...原创 2019-12-11 18:54:16 · 1831 阅读 · 0 评论 -
编译原理待了解的算法
编译原理待了解的算法消除文法一切左递归算法活前缀及可归前缀的一般计算方法遍历分析树进行语义计算消除文法一切左递归算法活前缀及可归前缀的一般计算方法遍历分析树进行语义计算步骤:构造输入串的语法分析树构造依赖图若该依赖图是无圈的,则按造此无圈图的一种拓扑排序对分析树进行遍 历,则可以计算所有的属性...原创 2019-12-10 21:14:13 · 460 阅读 · 0 评论 -
c语言文法描述
@TOC<函数定义> -> <修饰词闭包> <类型> <变量> ( <参数声明> ) { <函数块> }<修饰词闭包> -> <修饰词> <修饰词闭包> | $<修饰词> -> describe<类型> -> type <取地址&...原创 2019-12-01 16:26:04 · 1750 阅读 · 0 评论 -
c++实现LL1文法
打造简单的编译器(二)——语法分析(LL1文法)#include <iostream>#include <map>#include <vector>#include <set>#include <list>#include <cstdio>#include <iomanip>using namesp...原创 2019-12-11 18:44:24 · 4946 阅读 · 0 评论 -
编译原理实验(一)——词法分析
编译原理实验(一)——词法分析实验要求参考程序实验截图实验要求输入为字符串(或待进行词法分析的源程序),输出为单词串,即由(单词,类别)所组成的二元组序列;参考程序#include <string>#include <iostream>#include <fstream>#include <set>using namespace st...原创 2019-11-09 08:56:50 · 4953 阅读 · 0 评论 -
编译原理实验(三)——LR(0)语法分析
编译原理实验(三)——LR(0)语法分析实验要求参考程序实验结果程序输入说明截图实验要求根据LR(0)分析法编写一个语法分析程序 直接输入根据已知文法构造的分析表M;对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。参考程序#include <iostream>#include <string>#include &...原创 2019-11-09 09:17:33 · 10898 阅读 · 6 评论 -
编译原理实验(四)——中间代码生成程序(逆波兰表示)
编译原理实验(四)——中间代码生成程序(逆波兰表示)实验要求参考程序实验截图实验要求编制一个中间代码生成程序,能将算术表达式等翻译成逆波兰形式;参考程序#include <iostream>#include <vector>#include <stack>#include <map>using namespace std;struc...原创 2019-11-09 09:21:03 · 1924 阅读 · 0 评论 -
编译原理实验(二)——LL(1)文法语法分析
编译原理实验(二)——LL(1)文法语法分析实验要求参考程序程序输入说明实验结果截图实验要求根据LL(1)分析法编写一个语法分析程序 直接输入根据已知文法构造的分析表M;对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。参考程序#include <iostream>#include <string>#include...原创 2019-11-09 09:04:53 · 11185 阅读 · 2 评论 -
编译原理(六)
编译原理(六)自下而上的语法分析LR(0)分析构造NFA直接使用闭包和状态转换函数LR(0)项目集规范族的构造算法LR(0)分析表的构造SLR分析方法SLR(1)分析表的构造算法LR(1)分析闭包Closure(I)项目集规范族及识别活前缀的DFALR(1)分析表LALR(1)分析LALR分析表自下而上的语法分析最左推导(Left-most Derive):每一步推导都替换当前句型的最左边的...原创 2019-10-15 20:55:07 · 1356 阅读 · 0 评论 -
编译原理(五)
编译原理(五)预测分析器模型总控程序:(1)将’#’压入堆栈中,将开始符号S压入堆栈中(2)读取第一个输入符号到a;(3)循环执行下述操作: + 栈顶符号弹出放入X中; 如果X为终结符号: 如果X == a != ’ # ',表明成功匹配a符号; 读取下一个符号到a,否则出错 如果X == ‘#’ 如果X == a ,分析结...原创 2019-10-15 17:27:24 · 243 阅读 · 0 评论 -
编译原理问题(一)
编译原理-词法分析补充现有一文法如下(1)E→E+E(2)E→E∗E(3)E→(E)(4)E→i(1)E \rightarrow E + E \\(2)E \rightarrow E * E \\(3)E \rightarrow ( E ) \\(4)E \rightarrow i(1)E→E+E(2)E→E∗E(3)E→(E)(4)E→i消除二义性:(添加优先级)(1)E→...原创 2019-09-27 21:29:21 · 930 阅读 · 0 评论 -
编译原理(四)
编译原理(四)语法分析语法分析FIRST集合FIRST(α)={a∣α⇒∗a…,a∈VT}FIRST(α) = \{a| α \overset{*}{\Rightarrow} a…,a\in V_T\}FIRST(α)={a∣α⇒∗a…,a∈VT}若α⇒∗ε,则ε∈FIRST(α)若α \overset{*}{\Rightarrow} ε ,则ε \in FIRST(α)若α⇒∗ε,...原创 2019-09-25 19:36:04 · 286 阅读 · 0 评论 -
编译原理(二)
编译原理(二)文法的直观概念符号和符号串文法和语言的形式定义文法的直观概念BNF:<> 表示需要加以说明的一种语法上的概念,通常叫语法成分或非终结符号。::= 表示该符号的左部由右部定义,读作“可以是”或“定义为”,也可写作“→”。| 表示用其连接的符号之间是或的关系,读作“或”或“或者”。EBNF{} 表示{}内的语法成分可以重复,不加上下界时可重复0到任意次,有上下...原创 2019-09-25 18:59:49 · 962 阅读 · 0 评论 -
编译原理(三)
编译原理(二)文法的直观概念符号和符号串文法和语言的形式定义文法的直观概念BNF:<> 表示需要加以说明的一种语法上的概念,通常叫语法成分或非终结符号。::= 表示该符号的左部由右部定义,读作“可以是”或“定义为”,也可写作“→”。| 表示用其连接的符号之间是或的关系,读作“或”或“或者”。EBNF{} 表示{}内的语法成分可以重复,不加上下界时可重复0到任意次,有上下...原创 2019-09-24 21:13:38 · 2260 阅读 · 0 评论 -
编译原理(一)
编译原理(一)原创 2019-09-24 20:33:35 · 256 阅读 · 1 评论