perl 高手请进,如何从一个java元文件中把其中的method和其实现提取出来

renyb04 2009-03-30 04:32:58
例如,
import java.uil.*;
import java.javax.*;
class test{
private int a;
private int b = 10;
public abstruct void getMethod(String name, String Type);
public Test(int a, int b)
{...}
public int getValue() {
....
}
}
提取出一个hash表name<->method:
Test-> public Test(int a, int b)
{...}
getValue -> public int getValue() {
....
}
其中不应当包含abstruct 方法和字段。
以下表达式能提取出来嵌套的{}结构
our $openParens = 0;
my $NestedGuts = qr{
(?{ local $OpenParens = 0 }) # Counts the number of nested opens waiting to close.
(?> # atomic-grouping for efficiency
(?:
# Stuff not parenthesis
[^{}]+
# An opening parenthesis
| \{ (?{ $OpenParens++ })
# Allow a closing parenthesis, if we're expecting any
| \} (?(?{ $OpenParens != 0 }) (?{ $OpenParens-- }) | (?!) )
)*
)
(?(?{ $OpenParens != 0 })(?!)) # If there are any open parens left, don't finish
}x;
$str =~/({NestedGuts })/g

问题就是如何构造这个hash表???
...全文
59 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsir317 2009-04-05
  • 打赏
  • 举报
回复
错别字呗,应该是源文件。。。
iambic 2009-03-31
  • 打赏
  • 举报
回复
没听说过有管Java文件叫Java元文件的呀……
meadking 2009-03-30
  • 打赏
  • 举报
回复
用堆栈,
{
}
是关键,提取出来,
meadking 2009-03-30
  • 打赏
  • 举报
回复
用perl干什么?
直接用java的反射,就全部反射出来了
迭代一下,全部ok
shumo 2009-03-30
  • 打赏
  • 举报
回复
当然是.java文件啦,楼主能写出这么复杂的re,为什么就匹配不出来呢
iambic 2009-03-30
  • 打赏
  • 举报
回复
什么叫Java元文件?.class文件?

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧