Example #1
0
        public ParamsAn(string paramsString)
        {
            paramsAn = new List <ParamAn>();
            string type;

            while (true)
            {
                type = Utils.GetWord(paramsString, 0);
                if (!TypesAn.IsType(type))
                {
                    break;
                }

                paramsString = paramsString.Remove(paramsString.IndexOf(type), type.Length);
                paramsString = Utils.TrimFirst(paramsString);

                string name = string.Empty;
                foreach (char symbol in paramsString)
                {
                    if (symbol == ' ' || symbol == ',')
                    {
                        break;
                    }
                    name += symbol;
                }
                paramsString = paramsString.Remove(paramsString.IndexOf(name), name.Length);
                paramsString = Utils.TrimFirst(paramsString);
                if (paramsString.Length != 0 && paramsString[0] == ',')
                {
                    paramsString = paramsString.Remove(0, 1);
                    paramsString = Utils.TrimFirst(paramsString);
                }
                paramsAn.Add(new ParamAn {
                    type = new TypeAn(type), name = name
                });
            }
        }
Example #2
0
        public static Function TryParseFunctionHead(string str)
        {
            str = Utils.TrimFirst(str);
            string type = Utils.GetWord(str, 0);

            if (type == "")
            {
                return(new Function());
            }

            // try to find return type
            if (!TypesAn.IsType(type))
            {
                return(new Function());
            }
            TypeAn _type = new TypeAn(type);

            int typeInd = str.IndexOf(type);

            str = str.Remove(typeInd, typeInd + type.Length);
            str = Utils.TrimFirst(str);


            // try to find name
            string functName     = "";
            bool   isNameStarted = false;

            foreach (char el in str)
            {
                if (el != ' ' && el != '(')
                {
                    isNameStarted = true;
                }

                if ((el == ' ' || el == '(') && isNameStarted)
                {
                    break;
                }
                functName += el;
            }
            int nameInd = str.IndexOf(functName);

            str = str.Remove(nameInd, nameInd + functName.Length);
            str = Utils.TrimFirst(str);

            // try to find params
            string paramsString    = "";
            bool   isParamsStarted = false;

            foreach (char symbol in str)
            {
                if (symbol == ')')
                {
                    break;
                }

                if (symbol == '(')
                {
                    isParamsStarted = true;
                    continue;
                }

                if (isParamsStarted)
                {
                    paramsString += symbol;
                }
            }
            if (!isParamsStarted)
            {
                return(new Function());
            }
            int paramsInd = str.IndexOf(paramsString);

            str = str.Remove(paramsInd, paramsString.Length);
            str = Utils.TrimFirst(str);

            // try to find code
            string codeString    = "";
            bool   isCodeStarted = false;

            foreach (char symbol in str)
            {
                if (symbol == '}')
                {
                    break;
                }

                if (symbol == '{')
                {
                    isCodeStarted = true;
                    continue;
                }

                if (isCodeStarted)
                {
                    codeString += symbol;
                }
            }
            if (!isCodeStarted)
            {
                return(new Function());
            }
            codeString = Utils.TrimFirst(codeString);

            return(new Function(_type, functName, new ParamsAn(paramsString), codeString));
        }