SkipOOMiniJOOL编译实验前端发布
学习笔记 Popularity: 4%
MiniJOOLCE是SkipOOMiniJOOL编译器实验的前端,从源代码到LIR,已经做了部分优化,LIR已经包括了数组越界检查。目前经我测试,可通过test/correct下所有的测试样例,对test/warning下的所有测试样例均报告warning且正常编译,对test/error下的所有测试样例均报告至少一个错误(不一定“准确”)。
分析器类名:at.ream.minijoolce.skipoominijool.parser.Parser
语法检查器类名:at.ream.minijoolce.skipoominijool.checker.Checker
AST->LIR转换器类名:at.ream.minijoolce.skipoominijool.ast2lir.AST2LIR
Update 2010-6-20: 语义检查器改为抛异常表示语义错误。
Update 2010-6-20: 修正bug,为优化死循环造成,漏加Compare Label导致Continue语句不能正确翻译。感谢kyy报告bug!
今天早上我就将离开合肥去参加RoboCup世界杯,直到26号才会回来,本次发布就大概是我的最终版本了。世界杯期间我的电话无法打通,故这里我不能保证能给您非常及时的技术支持,不过还是欢迎您遇到问题就联系我(Email: windy@ream.at / QQ: 5809853),也欢迎您提供测试样例。
MiniJOOLCE
压缩包里包括了一个没什么用的系统设计说明。解压缩时请务必保证目录结构与压缩包中相同。
生成的LIR中对print语句翻译为call _print_int、call _print_bool和call _print_str,对read语句翻译为call _read_int、call _read_bool和call _read_str,主方法名为main,默认生成一个名为_seg_fault的函数用于处理数组下标越界。
生成win32 x86汇编时,请将主方法翻译为_main,print和read的实现请使用_printf和_scanf,数组置0值请使用_memset而不是bzero。
想看代码请直接反编译吧,跟我的源代码差不了多少。
愿主保佑WrightEagle。
- http://d.ream.at/skipoominijool-compiler-exp-frontend/
- Tags:编译原理
- (1)comments | leave a reply
- Trackback URI
June 21st, 2010 at 14:02 pm
我也来折腾看看
Reply