visto che nessuno mi risponde, mi rispondo da solo !
Codice PHP:
function matchFunction(str)
{
var result = [];
var nameparam = str.match(/function\s*(.*?)\s*\((.*?)\)\s*\{/);
if(nameparam == null)
return null;
result[1] = nameparam[1];
result[2] = nameparam[2];
result[3] = matchSection(str.slice(nameparam.index+nameparam[0].length-1),'{','}');
result[0] = nameparam[0] + result[3] + "}";
result.index = nameparam.index;
return result;
}
function matchSection(str,sectionStart,sectionEnd)
{
start = str.indexOf(sectionStart);
if(start > -1)
{
var opened = 1;
var currChar = start+1;
while(currChar < str.length && opened > 0)
{
if(str[currChar] == sectionStart)
opened ++;
else if (str[currChar] == sectionEnd)
opened --;
currChar++;
}
if(opened != 0)
return null;
return str.slice(start+1,currChar-1);
}
return null;
}
questo codice risolve il mio problema:
la funzione matchFunction mi riestituisce un array cosi formato :
arr[0] = intera funzione, cosi com'e' nell'input
arr[1] = nome della funzione;
arr[2] = parametri della funzione (non ero interessato a separare i singoli parametri, ma la cosa e' semplice da fare)
arr[3] = in corpo della funzione, che ora puo contenere anche {} a volontà, a patto che li si apra e chiuda correttamente (se una stringa contiene } il tutto non funziona ! ma per i miei scopi posso non considearare questo caso)
arr.index = posizione di inizio della funzione nell'input passato
spero che questo mio codice possa essere d'aiuto a qualcuno