
Compiler_mean3tmp.rar是一个压缩文件。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
input.txt为输入测试文件。produce.txt包含输入的LR1产生式,其处理能力有限,能够支持if、while、赋值、加、乘运算,但无法处理任何嵌套结构,且不支持数组操作。(您可以自行添加文法规则以扩展其功能。)Grammar.txt来源于某博主的文法,看起来十分可靠,但我并未对其进行进一步的验证。该程序本身没有明显的错误,但如果文法中存在左递归现象,则很可能会导致栈溢出(正如算法书中所描述的设计)。此外,LR文法必须避免产生歧义,您需要在文法中明确定义算术运算的优先级。若引入嵌套结构,则必然会显著增加程序的复杂度,运行时间可能会变得非常长——例如,可能需要十分钟以上才能完成。运行指南:gui.JtableParse3.java用于显示LR1分析表,并对input文件中的内容进行解析。输出词法分析结果至output.txt文件;同时记录规约过程,请注意,即使是较短的语句也可能产生冗长的规约过程。letex.LexResult.java用于展示词法分析结果,并输出所有识别出的单词。LR1识别的实现完全位于Parse3包内,请参考其类名以了解代码逻辑。我已为几乎每个主要类都添加了main()方法,方便您通过输入不同的产生式进行测试验证, 比如书本上提供的S -> SS -> C CC -> c C|d的集合以及与LR1结果和一些在线资源上的S -> SS -> L = RS -> RL -> * RL -> idR -> L等规则。通过运行ItemTable.java可以获得全部集合和goto集合;通过运行gotoTable.java可以得到goto表;通过运行ActionTable.java可以获得action表(采用cmd形式);并通过运行parse.java可以获得两张表的合集以及规约过程。gui.JtableParse3.java将上述两张表整合在一起并以图形化的方式呈现。我鼓励您积极探索并发现其中的潜在问题 *0* 。尽管我已仔细检查过代码但仍然不排除存在bug的可能性, 您可以通过发布修复bug的最新版本来完善程序。请务必注明原转载网址。更详细的思路和其他相关说明可参考以下网址:https://blog..net/qinglingLS 和 https://blog..net/qinglingLS/article/details/89814398【HIT哈工大编译原理实验】词法分析程序java【编译原理】求first集合的代码实现java【编译原理】求GOTO图的代码实现java【编译原理】LL(1)分析法代码, 您可以在博客中查找其他更新的版本。该代码于2019/5/8编写。
全部评论 (0)


