用Java解析Java代码

Fab*_*ook -2 java regex parsing

是否可以使用正则表达式解析某些Java代码?

因此,假设我int要从中获取变量列表:

int abc1 = 1;
int abc2 = abc1 + 1;
int abd3 = abc1 + abc2;
Run Code Online (Sandbox Code Playgroud)

我想把这些放进去ArrayList

所以像这样:

private void parse(String s){

    List<List<String>> variables = new ArrayList<List<String>>();

    list.add(new ArrayList<String>);//var type
    list.add(new ArrayList<String>);//var name
    list.add(new ArrayList<String>);//var data

    Pattern p = Pattern.compile();//This is what I want
    Matcher m = p.matcher(s);

    while(m.find()){
        String match = m.group();
        Pattern p2 = Pattern.compile();//Here as well
        Matcher m2 = p.matcher(s);
        while(m2.find()){
            for(int i = 0; i < m.groupCount()){
                //add the variables to the lists
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我要问的是什么正则表达式可以处理此任务?


这样做的原因是,用户可以使用一些代码对应用程序进行一点控制(Android应用程序顺便说一句)

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

Joo*_*ost 6

您可能想使用比正则表达式更高级的语法分析应用程序。例如,您可以查看ANTLR,它也提供各种语法。


Den*_*ret 6

人们经常尝试使用正则表达式解析HTML,XML,C或Java。

通过足够的努力和技巧,使用正则表达式的复杂组合可以实现许多令人惊奇的事情。但是,您最终总是会遇到非常不完整且效率不高的问题。

正则表达式不能处理复杂的语法,只能使用通用的或专用于Java的解析器。