- 博客(2)
- 收藏
- 关注
原创 用仓颉完成编译原理实验-消除左递归和左公共因子,求FIRST集和FOLLOW集
1. 非终结符排序:对非终结符进行字典顺序排序(或者按某个其他特性排序,如出现顺序等)。2. 遍历非终结符:对于每个非终结符 Ai:查找其候选式是否有其他非终结符(排在 Ai 前面的非终结符)作为开头:如果有,将候选式中该非终结符为首用该非终结符的产生式替代,从而将可能的间接左递归转化为直接左递归。如果没有,跳过该候选式。对所有直接左递归的候选式进行处理,⽣成新非终结符,并转换产生式,使其无左递归。3.消除左递归后可能需要化简文法。
2025-01-01 15:21:33
1092
原创 用仓颉完成编译原理实验-正规式转NFA转DFA
虽然我只用到仓颉语言简单基础的语法,但能感觉到它融合了多种语言的便捷的写法,写起来是比较舒服的。实现子集构造算法,将NFA状态集合的子集映射为DFA的单个状态。设计合理的数据结构来表示NFA和DFA,应包括状态集、状态转移表、初始状态和接受状态的表示。步骤4:设计并实现DFA的数据结构,将其表示为状态集合、状态转换表、初始状态和接受状态。步骤5:模拟DFA,验证对给定输入字符串的接受性,确保DFA与NFA的接受结果⼀致。步骤2:计算NFA各状态的ε-闭包,并根据子集构造算法生成DFA的状态。
2024-12-31 17:43:09
883
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人