![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
文章平均质量分 80
parting_soul
大道至简
展开
-
可导空的非终极符集合
可空非终结符集合 思路: 1.用集合R表示可空非终结符集合,初始状态集合R为空 2.遍历所有产生式,若存在A->w,w为空,则将A加入Q集合中 3.若有产生式A->x1x2x3x4... x1,x2,x3,x4都在集合Q中,则把A加入到A中 4.重复步骤3,直至集合Q不再变化 package com.parting_soul; import java.util原创 2017-04-08 11:28:33 · 1541 阅读 · 0 评论 -
确定有穷自动机
确定有穷自动机 思路: 将状态与对应的行,符号与对应的列 索引进行映射,输入规则为状态转换表,之后输入待判断的字符串,判断是否会被自动机接受 package com.parting_soul; import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 确定有穷自动机 * 将原创 2017-04-08 11:35:26 · 1235 阅读 · 0 评论 -
词法分析器
简易词法分析器: 输入一段程序,分离出每一个符号串,并标记其类型 package com.parting_soul; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOExcep原创 2017-04-08 11:41:02 · 1114 阅读 · 0 评论 -
LL(1)递归下降
package com.parting_soul.LL1Analyze; import java.util.Scanner; /** * 递归下降 * Created by parting_soul on 17-4-12. * * S->AaS * S->BbS * S->d * A->a * B->^ * B->c * * select(S->AaS) = {a}原创 2017-04-18 20:40:40 · 1753 阅读 · 0 评论 -
LL(1)文法first集
LL(1) 文法 first集 思路: 利用递归 第一步先计算可导空的非终极符集合 令first(X)=空 若 X->a... 则将a加入first(X) 若 X->ABC.. ,则计算first(A) ,first(B) ,first(C)..直到遇到第一个不导空的非终结符或者终极符,则将他们都加入first(X) 并除去^(空串)的情况 若 右部可以导空,将右原创 2017-04-08 11:56:29 · 1723 阅读 · 0 评论