tuna-master/joern/src/main/java/parsing/ParseTreeUtils.java
package parsing;

import org.antlr.v4.runtime.tree.ParseTree;

public class ParseTreeUtils {
    public static String childTokenString(ParseTree ctx) {
        // TODO: Optimize this. Strings are immutable

        // The reason we don't just call ctx.getText()
        // here is because it removes whitespace, making
        // 'inti' from 'int i'.

        if (ctx == null)
            return "";

        int nChildren = ctx.getChildCount();

        if (nChildren == 0) {
            return ctx.getText();
        }

        String retval = "";

        for (int i = 0; i < nChildren; i++) {
            ParseTree child = ctx.getChild(i);
            String childText = childTokenString(child);
            if (!childText.equals("")) {
                retval += childText + " ";
            }
        }

        if (retval.length() > 0)
            retval = retval.substring(0, retval.length() - 1);
        return retval;
    }
}
