- 我们知道正则表达式是不能表示下面的情形的:一个b的前后跟着同样个数的a,运用编译原理知识,给出两种解决办法。
- 写出DFA最小化的算法(这个和下面的算法题真的是写实验的代码)
- 写出消除直接和间接坐公因子的算法
- 写出有加减乘除取余的后缀表达式的文法并画出LR(1)DFA图,构造其LALR(1)分析表
- 写出正则表达式的文法,并写出它生成四元组时相应的语义动作
- TINY语法题:
(1) 使用自顶向下方法分析时,希望给TINY语言添加for循环,需要对原文法进行哪些改造?请写出改造后的文法规则
(2) 请写出相应的生成语法树时的代码
这里也附上我的github地址,里面有四个实验,完成程度不高请见谅,并附上我同学用C#写的开源的语法分析完全体(包括LL1,LR0,SLR1,LR1,LALR1;且全部支持查看分析表)
四个实验分别是:
- 实验一:Scanner
- 实验二:正则表达式转NFA转DFA转最小化DFA并生成相应的词法分析程序
- 实验三:LL(1)分析器
- 实验四:TINY+语法树生成器(即TINY文法改造)
p.s:实验详情见我的GIthub仓库中的readme说明
我的Github地址:https://github.com/hjy2000?tab=repositories
我同学的项目地址:https://github.com/lgbgbl/Syntax-Analysis
最后告诫同学们,千万不要下载直接抄,自己看着代码实现一次才是对期末的最好保障。
2022/03/05更新:
补充一个0xFFFF上发现的2021年的考题,链接如下: