![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
everyD_struggle
任重而道远
展开
-
编译原理 - SLR分析法设计与实现
文章目录1. 理论依据2.流程分析3. 数据结构分析4. 部分代码5. 全部代码1. 理论依据(1)由于LR(0)能分析的文法一般都很简单,而且文法构造出的活前缀的DFA的每个状态都不能含冲突项目。故本实验选择一个较为复杂的SLR分析方法。(2)一般的项目集规范族中如若存在“移进-规约”冲突项目,是不能采用LR(0)分析方法的。那么该如何解决冲突呢?(3)冲突动作都可以通过考察有关的非终结符的FOLLOW集合解决,即通过查看当前输入符号来协助解决冲突。所以我们知道,我们得到我们需要求出相应非终结符的原创 2020-06-18 20:56:08 · 2818 阅读 · 0 评论 -
编译原理 - 算符优先分析方法(JAVA)
1. 理论依据1)判断输入文法是否算符文法根据定义:产生式右部不包含两个相邻非终结符的文法称为算符文法。我们们对输入的文法进行依次遍历,查看每个产生式的右部进行遍历查找,如果发现出现两个非终极符连续出现,则发出提示,文法不符,并要求重新输入文法。2)采用由定义构造算符优先关系集合并构造矩阵由以上公式,先得到对应的FIRSTVT与LASTVT集合,再依次遍历文法找到所需的…aV…或者…Vb…产生式,与FIRSTVT(V)或者LASTVT(V)卡氏积,得到>,<,=的算符优先关系,将这些关原创 2020-06-06 18:02:40 · 5043 阅读 · 1 评论 -
编译原理 - LL(1)语法分析器的设计与实现
1.基本原理FIRST、FOLLOW、SELECT三个集合构建规则,预测分析过程如下:1、FIRST集合计算文法符号 X 的 FIRST(X),不断运用以下规则直到没有新终结符号或 ε可以被加入为止 :(1)如果 X 是一个终结符号,那么 FIRST(X) = X。(2)如果 X 是一个非终结符号,且 X ->Y1 Y2 … Yk是一个产生式,其中 k≥1,那么如果对于某个i,a在 FIRST(Y1)、FIRST(Y2)… FIRST(Yi-1)中,就把a加入到 FIRST(X) 中。(3原创 2020-05-17 17:31:18 · 7973 阅读 · 0 评论 -
java-词法分析器的设计与实现(编译原理)(标识符机内码实现)
1.机内码应该的特点:一个标识符对应一个机内码相同标识符对应一个机内码2.设计思想:基于java语言的hashmap结构:3.Java hashmap的特点:存储时:他们会找到相同的bucket位置,发生碰撞,因为HashMap使用链表存储对象(每个Map.Entry都有一个next指针),这个Entry会存储在链表中。获取时:会用hashCode找到bucket位置,然后调...原创 2020-04-13 22:05:31 · 1606 阅读 · 0 评论