
编译原理
收起我的小肚腩
正在努力学习的小白,希望在CS的道路上越走越远
展开
-
编译原理对文法求项目集族的实现
对给定文法,采用JAVA语言实现求其项目集族。算法设计: * 1.遍历项目集,首先取出第i个项目集 * 2.遍历第i个项目集,取出所有点点后的字符加入缓存中 * 3.创建新的项目集 * 4.循环取出缓存中的字符(表示可读入状态), * 如若当前状态集中有当前取出的缓存字符,则创建一个新的项目(点点后移),并在新的项目集中加入此项目(创建以此项目) * 5.如果items中无此项目,则加入 * @param G代码实现如下:private void createFamily(Gramma原创 2021-12-05 00:09:34 · 636 阅读 · 1 评论 -
编译原理对于求文法Follow集合的实现
实现的算法设计/*** 首先:如果要找L的Follow,要从式子的右边找到L,然后来找L的Follow。 * 其次:将‘#’加入到 开始符 的 Follow中 ① * * 接着:如果L的右边是终结符,那么这个终结符加入L的Follow ② * * 如果L的右边是非终结符,那么把这个非终结符的First集合除去"~"(空)后剩下的元素加到L的Follow中 ③ * * 特别的,如果L处在末尾,那么,将 '->' 符号左边的Follow加入L的Follow * 对原创 2021-12-04 16:35:42 · 509 阅读 · 0 评论 -
编译原理关于对求文法First集的实现
编译原理关于对求文法First集的实现 思路: * 若X->a..,则将终结符a加入FIRST(X)中;(注意非终结符的情况) * * 若X->e ,则将终结符e加入FIRST(X)中(e表示空集); * * 若 X->BC..D,则将First(B)所有元素(除了空集)加入First(A),然后检测First(B) * 若First(B)中不存在空集, 即e,则停止, * 若存在则向B的后面查看,将First(C)中所有元素(除了空集)加入First(A), * 然后再原创 2021-12-02 22:41:36 · 617 阅读 · 1 评论