解析java源文件

尝试从java源文件中解析出类、方法、属性等信息,但下面的代码没有完全实现。

Sub parseJava() Dim package_name as String 'read a file Documents.Open FileName:="f:\CommandCm.java", ConfirmConversions:=False, ReadOnly:=True paraNo = ActiveDocument.Paragraphs.Count For lineNo = 1 To paraNo Set curParaWords = ActiveDocument.Paragraphs(lineNo).Range.Words Dim strCurPara as String strCurPara = ActiveDocument.Paragraphs(lineNo).Range.Text If InStr(strCurPara, "package")=1 Then '包名是package后、分号前的部分 tmpStr = Right(strCurPara,Len(strCurPara)-Len("package")-1) package_name = Left(tmpStr, Len(tmpStr)-2) End If If InStr(strCurPara, "public class")=1 Then '类名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(curParaWords(3).Text) End If If InStr(strCurPara, "public interface")=1 Then '接口名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(curParaWords(3).Text) End If Select Case curParaWords(2).Text Case "public"

Case "private" Case "protected" Case Else End Case If curParaWords(2)="public" Then '接口名是这一行的第三个单词,且不含末尾空格 class_name = RTrim(ActiveDocument.Paragraphs(lineNo).Range.Words(3).Text) End If Next lineNo ActiveDocument.Close End Sub

下面是业务逻辑:

数据结构:

类相关数据表ClassInfo(Map)

key: name, description, class_name, package, extends, interface;

属性数据表PropInfo(List)

方法数据表MethodInfo(List)

文本格式约定:

顶格、package起首代码行为package声明行;

顶格、public class起首的代码行是类声明行;

顶格、 public interface起首的代码行是接口声明行;

一个tab后跟public、private、protected是方法或者属性

有左括号的是方法, 左括号前单词是方法名,方法名前是返回值的数据类型;

无左括号 的是 属性,等号左边单词是属性名,若无等号分号前单词是属性名,若都没有输出一条 “文件名:行号:异常属性/方法,手工提取” 提示;

一个tab后跟其他字母 输出一条“文件名:行号:异常属性/方法,手工提取”提示;

一个tab后跟非字母符号(如/*是注释,@是编译标志)略过;

流程:

用户输入目标目录

将文件名保存在ClassInfo.name和class_name中;

加载该目录下所有java文件, 对于一个java文件:

第一次文本逐行读取:提取除方法/属性说明外所有信息;

第二次文本逐行读取:寻找以“* 方法名”开始的行,作为方法说明,放入对应的方法Map中;

转载于:https://www.cnblogs.com/darkmatter/p/3606796.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值