合肥工业大学编译原理实验LL(1)文法分析,Scala
实现,
消除了形式上
的左递归
,但存在bug,不能直接用,过实验指导书的样例
没问题;Java实现GUI。
Dell G3 3579;
OS:Ubuntu 16.04.06;
IDE:InterlliJ IDEA Ultimate Edition(2019.1.3);
编程语言:Scala、Java。
代码行数:
①纯粹自己写的、不含GUI代码、不含注释、不含空行:876;
②含参考而来的GUI代码与各类注释:1664;
数据结构与算法设计:
①核心代码部分,均为自己参照书上的算法,用极为朴素的方法实现(Scala,876);
②值得一提的是,FOLLOW集采用“先定位”,后“记忆搜索”的方法,对于不含左递归的文法,时空不甚可观;
③消除了形式上的左递归,但含bug;
④GUI的编写参考“菊花侠”大佬的手笔,Java封装实现界面。
图 1 开始界面
图 2 选择文件
图 3 显示当前文法
图 4 执行文法分析(输入表达式为“i+i*i”)
图 5 执行文法分析(输入表达式为“i+i*i-i/i”)