用Java解析Java代码

用Java解析Java代码,java,regex,parsing,Java,Regex,Parsing,可以用正则表达式解析一些Java代码吗 假设我想要一个int变量列表: int abc1=1; int abc2=abc1+1; int abd3=abc1+abc2; 我想把它们放到数组列表中 比如说: private void解析(字符串s){ 列表变量=新的ArrayList(); list.add(newarraylist);//变量类型 list.add(newarraylist);//变量名 list.add(newarraylist);//变量数据 Pattern p=Patt

可以用正则表达式解析一些Java代码吗

假设我想要一个
int
变量列表:

int abc1=1;
int abc2=abc1+1;
int abd3=abc1+abc2;
我想把它们放到
数组列表中

比如说:

private void解析(字符串s){
列表变量=新的ArrayList();
list.add(newarraylist);//变量类型
list.add(newarraylist);//变量名
list.add(newarraylist);//变量数据
Pattern p=Pattern.compile();//这就是我想要的
匹配器m=匹配器p;
while(m.find()){
字符串匹配=m.group();
Pattern p2=Pattern.compile();//这里也是
匹配器m2=p.匹配器;
while(m2.find()){
对于(int i=0;i
我想问的是什么正则表达式可以处理这个任务


这一切的原因是,用户可以使用一点代码来控制应用程序(顺便说一句,Android应用程序)


如果不建议使用正则表达式,那么我应该使用什么解析器?

您可以尝试使用正则表达式,但使用Java解析器可能更容易。您可以试试。

您可能希望使用比regex更高级的语法分析应用程序。例如,您可以查看其中还有各种语法可用。

我建议您查看解析器生成器,例如JavaCC。JavaCC允许您以类似BNF的风格描述语法,并根据它创建Java类。
JavaCC已经有语法可用于解析Java代码,我认为甚至可以作为JavaCC附带的示例或教程。

如果您真的必须使用正则表达式,请尝试类似的方法。
(?人们经常尝试用正则表达式解析HTML、XML、C或Java

只要付出足够的努力和技巧,使用复杂的正则表达式组合,很多令人惊奇的事情都是可能的。但最终你总是会得到一些非常不完整和没有效率的东西


Regex不能处理复杂的语法,可以使用泛型或语法分析器。

作为注释,有很多可用的语法分析器。我不会试图用Regex来处理复杂的语法。这背后的动机是什么?你不能用正则表达式解析递归语法。请使用语法分析器。@SmartLemon:不,这在理论上是不可能的。Regexps不能处理递归语法。嗯,我明白了,我猜这将是一个解析器,然后你可以浪费时间尝试正则表达式,但你不会成功。1956年就证明了这一点。使用解析器不仅“更容易”,而且是必不可少的。