使用C++实现的Java语言子集词法、语法、语义分析器

2007/12/27 | 10:05 | 分类:Windows开发 | 标签: | 4,334次阅读
  上学期的一个编译原理大作业,公布出来给大家参考。使用C++实现的Java语言子集词法、语法、语义分析器。参考开源的GJC(Generic Java Compiler,Sun Microsystems,Java语言实现)开发,提供源代码与说明文档(包含详细的FA设计、数据结构与算法说明以及一个完整的编译实例)。
 
  仅供参考,请勿挪做他用。
 
  下载: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>   + | - | * | /              // 运算符必须符合优先级和结合性

  1. 3条评论 关于 “使用C++实现的Java语言子集词法、语法、语义分析器”

  2. meimei 发表于2012-06-05

    您好,请问你的程序是在什么平台下实现的?

  3. Jian Lin 发表于2012-06-06

    Windows XP。

  1. 1 Trackback(s)

  2. 2010-12-16: C++实现的Java语言子集词法、语法、语义分析器 - CLucene教程

发表您的评论

您的名字: (必填)

您的邮箱: (不会被公布,必填)

您的网站:

声明:本blog默认为评论人对评论内容拥有版权并承担相关法律责任。评论人授权blog作者对评论进行引用、存档或以其他方式合理使用。Blog作者保护评论内容的完整性,但有权在不通知评论人的前提下删除评论。