使用C++实现的Java语言子集词法、语法、语义分析器
上学期的一个编译原理大作业,公布出来给大家参考。使用C++实现的Java语言子集词法、语法、语义分析器。参考开源的GJC(Generic Java Compiler,Sun Microsystems,Java语言实现)开发,提供源代码与说明文档(包含详细的FA设计、数据结构与算法说明以及一个完整的编译实例)。
仅供参考,请勿挪做他用。
下载:http://files.linjian.org/c_cpp/JavaLex_Java2Asm.rar
仅供参考,请勿挪做他用。
下载:http://files.linjian.org/c_cpp/JavaLex_Java2Asm.rar
原作业要求如下:
一、Java语言词法分析器(JavaLex)
用C++作为宿主语言完成Java语言词法分析器的设计和实现。具体要求为:使用DFA实现词法分析器的设计;实现对Java源程序中注释的过滤;词法分析结果属性字流存放在独立文件中;统计源程序每行单词的个数和整个源文件单词个数;具有报告词法错误和出错位置(源程序行号和该行字符)的功能。
二、Java语言子集语法、语义分析器(Java2Asm)
用C++作为宿主语言完成Java语言子集语法、语义分析器。具体要求为:完成下列文法描述的Java源代码的语法分析、语义分析及代码生成。代码生成的目标代码为MASM汇编代码;词法分析使用实验一完成的词法分析器(即与词法分析器有直接接口);通过测试用例的验收。
|
Java语言子集文法
<Sw> while ( Er ) S ; <Er> Vc < Vc | Vc > Vc <S> 标识符 = Ex ; // 标识符使用词法分析识别结果 <Vc> 标识符 | 整常数 // 标识符、整常数使用词法分析识别结果 <Ex> Vc P Ex | Vc <P> + | - | * | / // 运算符必须符合优先级和结合性 |

3条评论 关于 “使用C++实现的Java语言子集词法、语法、语义分析器”
由 meimei 发表于2012-06-05
您好,请问你的程序是在什么平台下实现的?
由 Jian Lin 发表于2012-06-06
Windows XP。