编译原理
有山望云
这个作者很懒,什么都没留下…
展开
-
NFA转换DFA的方法:子集构造法
要点:先构造NFA,构造完成后从开始节点分析NFA,具给开始节点一个非空符号,比如 a 。从NFA上看能够走到那些节点,这些节点的集合就可称为状态q1。再以q1为基本节点,从NFA图上分析当接收符号b(事实上,也可以还是a,而且接收a的分析是必须要做的,最终需要在一个集合上分析所有符号)时能偶走到那些节点,得到的新集合可以称为q2。需要特别指出的是:q0确实是依附于开始节点,但是经过分析得到的q1、q2和节点1、2没有关系。...原创 2020-06-26 23:43:44 · 2223 阅读 · 0 评论 -
自顶向下分析消除左递归的方法
左递归产生的原因是产生式的左右有相同的非终结符,具体来说就是形如A→Aα | β这时自顶向下分析将成为死循环,消除左递归的方法是引入符号A’和εA→βA’A’→αA’ | ε以上是直接左递归,还有间接左递归,例如S→Aa | βA→Ac | Sd | ε很显然,因为有S⇒Aα⇒Sda,所以非终结符S是左递归的,但不是立即左递归。对于间接左递归,消除方法是替换,将间接左递归转换成直接左递归。将第二个产生式的S用第一个产生式替换,得到A→Ac | Aad | ε参考资料:1.编译原理 第三版,Alfre原创 2020-06-27 11:00:29 · 631 阅读 · 0 评论 -
语法转换:提取左公因子
提取左公因子是一种语法转换方法,作用是改写文法。当一个文法的非终结符有多个相同前缀的候选式时,就需要进行提取左公因子。看一个文法G:S→aAd | aBeA→cB→b提取左公因子后的文法G’:S→aS’S→Ad | BeA→cB→b作用是延迟选择,等得到足够多的输入信息后再决定选择哪一个候选式...原创 2020-06-27 11:26:51 · 6660 阅读 · 1 评论