// returns pair(functionName, args) static Pair> tok_parseFunctionCall(S s) { ret tok_parseFunctionCall(javaTok(s)); } static Pair> tok_parseFunctionCall(L tok) { if (!(isIdentifier(get(tok, 1)) && eqGet(tok, 3, "("))) null; Map bracketMap = getBracketMap(tok); Int iClosing = bracketMap.get(3); if (!(eq(iClosing, l(tok)-4) && eqGet(tok, l(tok)-2, ";")) && neq(iClosing, l(tok)-2)) null; int i = 5, argStart = 5; new L args; while (i < iClosing) { Int j = bracketMap.get(i); if (j != null) continue with i = j+2; if (eqGetOneOf(tok, i, ",")) { if (i > argStart) args.add(trimJoinSubList(tok, argStart, i)); argStart = i+2; } i += 2; } if (i > argStart) args.add(trimJoinSubList(tok, argStart, i)); ret pair(tok.get(1), args); }