示例#1
0
        //Metodi statici
        /// <summary>
        /// Metodo Factory, istanzia le funzioni
        /// </summary>
        /// <param name="sign">Firma di una funzione</param>
        /// <param name="lm">Gestore dei messaggi</param>
        /// <param name="lineNumber">Numero di linea del documento</param>
        /// <param name="checkSign">Controlla l'integrita della firma inserita</param>
        /// <returns>Funzione estratta dalla firma, oppure null</returns>
        static public Function GetFunctionBySign(string sign, LogManager lm, int lineNumber = -1, bool checkSign = true)
        {
            if (Regex.Match(sign, @"#(.*)\s*\[", RegexOptions.None).Success)   //Se è una firma in un formato riconosciuto
            {
                //Situazione:    #programma(sicuro,massimo)[
                sign = sign.Trim('#', '['); //Rimuove i simboli

                //Situazione:   programma(sicuro,massimo)
                Match _match = Regex.Match(sign, @"\((.*)\)\s*", RegexOptions.None);   //Inidividua singolarmente i parametri
                if (_match.Success)
                {
                    return(new Function(sign.Substring(0, _match.Index), CodeCleaner.RemoveWhiteSpace(_match.Value, lm).Trim('(', ')').Split(','), lineNumber, lm));                  //Genera funzione con parametri
                }
                else
                {
                    return(new Function(sign, lineNumber, lm)); //Genera funzione senza parametri
                }
            }
            else
            {
                lm.Add("The string \'" + sign + "\' is not a functions string", lineNumber);
                return(null);
            }
        }