
编译原理
文章平均质量分 67
小树ぅ
放弃不难 但坚持一定很酷!
展开
-
【编译原理】C++实现LR(1)分析法(源码+结果+总结)
实验目的根据预先由文法规则建立的LR(1)分析表对任意的输入串进行语法分析。要求输出分析过程表。实验步骤1、先读入终结符,非终结符,和所有产生式。2、预处理:初始化;getpp()获得每个非终结符在产生式左边时的产生式编号,记录在stringgetp[]中(可以多个)。3.获得所有的符号的first集:dfs法,从S开始DFS,遇到终结符则是递归出口,回溯时候沿路保存记录所有路径上VN的first,(遇到有左递归的,continue,左递归的产生式不用不影响求fisrt集)4:获得项目集..原创 2021-06-01 23:20:19 · 7706 阅读 · 4 评论 -
【编译原理】C++实现算符优先分析(超详细系列+有源码+有注释+可运行)
目录算符优先分析1.实验目的2.实验过程2.1算符优先关系表的构造方法2.2思路3.实验代码:4.实验结果算符优先分析1.实验目的了解用算符优先法对表达进行语法分析的方法,掌握自顶向下的预测语法分析程序的手工构造方法。实验要求:一个交互式面向对象的算符优先分析程序基本功能是:(1) 输入文法规则(2) 对文法进行转换(3) 生成每个非终结符的FirstVT和LastVT(4) 生成算符优先分析表(5) 再输入文法符号串(6) 生...原创 2021-05-11 22:48:37 · 6329 阅读 · 6 评论 -
【编译原理】C++实现“逆波兰式的产生及计算“(超级详细系列、有源码+注解)
目录逆波兰式的产生及计算1.实验目的2.实验步骤2.1由上图可知需要对运算符的优先级进行判断,构造一个优先级类如下:2.2根据上图算法构造Polish类对逆波兰表达式的生成过程进行编写(我采用了两个栈来分别存储运行数和运算符,优先级的比较在运算符栈进行),然后通过一个打印类将逆波兰表达式结果显示出来:2.3构造一个cal类用来计算逆波兰表达式的值,这里采用一个栈来进行运算:3.实验结果4.实验源码+注释逆波兰式的产生及计算1.实验目的将用中缀式表示的算..原创 2021-05-11 22:26:32 · 4580 阅读 · 2 评论 -
【编译原理】 C++实现LL(1)文法(超详细,掰碎了给你吃!)FIRST集,FOLLOW集,预测分析表算法思想
实验目的:根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。简单要求:至少做到对下列已知的文法,用LL(1)分析法对任意输入的符号串进行分析:(1)E->TG(2)G->+TG(3)G->ε(4)T->FS(5)S->*FS(6)S->ε(7)F->(E)(8)F->I高要求:(1)手动输入文法;(2)显示文法的非终结符的FO原创 2021-02-08 16:01:17 · 6993 阅读 · 5 评论 -
【编译原理】 C++实现词法分析(可运行有注解)
实验目的:编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。词法分析、语法分析、语义分析的区别:1.词法分析: 词法分析是编译过程的第一个阶段,这个阶段的任务可以看成是-从左到右一个字符一个字符地读入源程序,从中识别出一个个“单词”符号,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号); 通过词法分析程序实现上述读入源程序,识别符号的任务,词法原创 2021-02-08 15:44:08 · 5704 阅读 · 0 评论