如何在python中使用递归来解析java代码中的方法体?

时间:2014-03-10 14:48:13

标签: java python regex parsing

我有一个java代码,我需要在python中解析它。我在python中使用正则表达式来达到这个目的。我成功地找到了方法名称,但是为了找到方法体,我需要用条件写正则表达式。 对于前代码我正在解析?

class abc
{
 public void main()
 {
     //some code

      if(blabla)
      {

      }
      else
      {

       }
       //some code

   }
public static int method1(int asd,int bad)
{
    //body
}

}

我需要输出为[(int,method1,“body”),('void',main,“body”)] 所以我写了正则表达式 r'[public|private|protected]\s+[static]\s+(\w+)\s+(\w+)\(.*\)\n\{' 找到方法名称,但如何查找正文,因为它可能包含多个'{','}'

1 个答案:

答案 0 :(得分:2)

你不会成功使用正则表达式。你需要的是一个真正的解析器。

我推荐的解析器是pyparsing,它易于使用和理解。

如果你需要更富有表现力的解析,总会有ANTLR已经构建了Java语法,并且很容易输出python代码。