コード例 #1
0
        public void CountSpen(string[] code)
        {
            NumberOfLinesInCode = code.Count();
            _code = new string[NumberOfLinesInCode];
            Array.Copy(code, _code, NumberOfLinesInCode);
            DeleteComments();
            CountConstStrings();
            CountOperatorsInCode();
            DeleteImport();
            CountConstNumbers();
            #region operator -
            int numberOfMinus = CheckOperator("-");
            if (numberOfMinus > 0)
            {
                OperatorsInCode.Add("-", numberOfMinus);
            }
            #endregion
            #region operand True False
            if (CheckWordOperator("True") > 0)
            {
                Identificators.Add("True", CheckWordOperator("True"));
            }
            if (CheckWordOperator("False") > 0)
            {
                Identificators.Add("False", CheckWordOperator("False"));
            }
            #endregion
            #region operator .
            int numberOfVirgules = CheckOperator(".");
            if (numberOfVirgules > 0)
            {
                OperatorsInCode.Add("x.attribute", numberOfVirgules);
            }
            #endregion
            CountVariablesInCode();

            OperatorsInCode = OperatorsInCode.OrderBy(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value);
            Identificators  = Identificators.OrderBy(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value);

            NumberOfIdentificators = Identificators.Count;

            List <string> list = Identificators.Keys.ToList();
            foreach (var key in list)
            {
                Identificators[key]--;
            }

            foreach (var pair in Identificators)
            {
                SpenSumma += pair.Value;
            }
        }
コード例 #2
0
        public void CountChepen(string[] code)
        {
            NumberOfLinesInCode = code.Count();
            _code = new string[NumberOfLinesInCode];
            Array.Copy(code, _code, NumberOfLinesInCode);
            OperatorsInCode.Clear();

            CheckLines();
            DeleteComments();
            CountConstStrings();
            CountOperatorsInCode();
            DeleteImport();
            CountConstNumbers();
            #region operator -
            int numberOfMinus = CheckOperator("-");
            if (numberOfMinus > 0)
            {
                OperatorsInCode.Add("-", numberOfMinus);
            }
            #endregion
            #region operand True False
            if (CheckWordOperator("True") > 0)
            {
                Identificators.Add("True", CheckWordOperator("True"));
            }
            if (CheckWordOperator("False") > 0)
            {
                Identificators.Add("False", CheckWordOperator("False"));
            }
            #endregion
            #region operator .
            int numberOfVirgules = CheckOperator(".");
            if (numberOfVirgules > 0)
            {
                OperatorsInCode.Add("x.attribute", numberOfVirgules);
            }
            #endregion

            SearchC();
            SearchP();
            SearchM();
            SearchT();
            CountInputOutputVariables();

            Coefficient  = P.Count + 2 * M.Count + 3 * C.Count + 0.5 * T.Count;
            Coefficient1 = P1.Count + 2 * M1.Count + 3 * C1.Count + 0.5 * T1.Count;
        }
コード例 #3
0
        public void CountFunctions()
        {
            List <string> listOfFunctions = new List <string>();

            for (int i = 0; i < _code.Length; i++)
            {
                string line = _code[i];
                for (int j = 1; j < line.Length; j++)
                {
                    if (line[j] == '(' && line[j - 1] != ' ' && line[j - 1] != '(')
                    {
                        _code[i] = _code[i].Remove(j, 1);
                        _code[i] = _code[i].Insert(j, " ");
                        line     = _code[i];
                        int numberOfBrackets = 0;
                        for (int k = j + 1; k < line.Length; k++)
                        {
                            if (line[k] == '(')
                            {
                                numberOfBrackets++;
                            }
                            if (line[k] == ')')
                            {
                                if (numberOfBrackets == 0)
                                {
                                    _code[i] = _code[i].Remove(k, 1);
                                    _code[i] = _code[i].Insert(k, " ");
                                    line     = _code[i];
                                    break;
                                }
                                else
                                {
                                    numberOfBrackets--;
                                }
                            }
                        }
                        for (int k = j - 1; ; k--)
                        {
                            if (k == -1 || line[k] == '.' || line[k] == ' ')
                            {
                                string nameOfFunction = line.Substring(k + 1, j - k - 1);
                                listOfFunctions.Add(nameOfFunction);
                                _code[i] = _code[i].Remove(k + 1, j - k - 1);
                                _code[i] = _code[i].Insert(k + 1, " ");
                                line     = _code[i];
                                j        = k + 2;
                                break;
                            }
                        }
                    }
                }
            }
            for (int i = 0; i < listOfFunctions.Count; i++)
            {
                string str = listOfFunctions[i];
                int    num = 1;
                for (int j = i + 1; j < listOfFunctions.Count; j++)
                {
                    if (listOfFunctions[j] == str)
                    {
                        num++;
                        listOfFunctions.RemoveAt(j);
                        j--;
                    }
                }
                OperatorsInCode.Add(str + "()", num);
            }
        }
コード例 #4
0
 public void CountOperatorsInCode()
 {
     #region operators + * / & | ...
     for (int i = 0; i < _operators.Count(); i++)
     {
         string operat = _operators[i];
         int    num    = CheckOperator(operat);
         if (num > 0)
         {
             OperatorsInCode.Add(operat, num);
         }
     }
     #endregion
     #region operators [] [:] [::]
     int zeroColons = 0, oneColon = 0, twoColons = 0;
     for (int i = 0; i < NumberOfLinesInCode; i++)
     {
         int numOfColon = 0, numOfBrackets = 0;
         for (int j = 0; j < _code[i].Length; j++)
         {
             if (numOfBrackets > 0)
             {
                 if (_code[i][j] == ':')
                 {
                     numOfColon++;
                 }
                 else if (_code[i][j] == ']')
                 {
                     numOfBrackets--;
                     if (numOfColon == 0)
                     {
                         zeroColons++;
                     }
                     else if (numOfColon == 1)
                     {
                         oneColon++;
                     }
                     else if (numOfColon == 2)
                     {
                         twoColons++;
                     }
                     numOfColon = 0;
                 }
                 else if (_code[i][j] == '[')
                 {
                     numOfBrackets++;
                 }
                 else
                 {
                     continue;
                 }
                 _code[i] = _code[i].Remove(j, 1);
                 _code[i] = _code[i].Insert(j, " ");
             }
             else if (_code[i][j] == '[')
             {
                 numOfBrackets = 1;
                 _code[i]      = _code[i].Remove(j, 1);
                 _code[i]      = _code[i].Insert(j, " ");
             }
         }
     }
     if (zeroColons > 0)
     {
         OperatorsInCode.Add("[]", zeroColons);
     }
     if (oneColon > 0)
     {
         OperatorsInCode.Add("[:]", oneColon);
     }
     if (twoColons > 0)
     {
         OperatorsInCode.Add("[::]", twoColons);
     }
     #endregion
     #region operator {:,...}
     int numberOfCurlyBrackets = 0;
     for (int i = 0; i < NumberOfLinesInCode; i++)
     {
         bool inCurlyBrackets = false;
         for (int j = 0; j < _code[i].Length; j++)
         {
             if (_code[i][j] == '{')
             {
                 numberOfCurlyBrackets++;
                 inCurlyBrackets = true;
             }
             else if (_code[i][j] == '}')
             {
                 inCurlyBrackets = false;
             }
             else if (!(inCurlyBrackets && _code[i][j] == ':'))
             {
                 continue;
             }
             _code[i] = _code[i].Remove(j, 1);
             _code[i] = _code[i].Insert(j, " ");
         }
     }
     if (numberOfCurlyBrackets != 0)
     {
         OperatorsInCode.Add("{:,...}", numberOfCurlyBrackets);
     }
     #endregion
     #region operators not in is or and ...
     for (int i = 0; i < _wordOperators.Count(); i++)
     {
         string operat = _wordOperators[i];
         int    num    = CheckWordOperator(operat);
         if (num > 0)
         {
             OperatorsInCode.Add(operat, num);
         }
     }
     #endregion
     #region delete def
     int numberOfDef = 0;
     for (int i = 0; i < NumberOfLinesInCode; i++)
     {
         if (_code[i].Length >= 3 && String.Compare("def", _code[i].Substring(0, 3)) == 0 && _code[i][3] == ' ')
         {
             _code[i] = "";
             numberOfDef++;
         }
     }
     //if (numberOfDef > 0)
     //    OperatorsInCode.Add("def ... :", numberOfDef);
     #endregion
     #region operator for if elif else while def lambda
     for (int i = 0; i < _wordOperatorsWithColon.Count(); i++)
     {
         string operat = _wordOperatorsWithColon[i];
         int    num    = CheckWordOperatorWithColon(operat);
         if (num > 0)
         {
             if (i == 2)
             {
                 int num2 = OperatorsInCode["in"] - num;
                 OperatorsInCode.Remove("in");
                 if (num2 > 0)
                 {
                     OperatorsInCode.Add("in", num2);
                 }
                 OperatorsInCode.Add("for ... in ... :", num);
             }
             else if (i == 3)
             {
                 OperatorsInCode.Add("if:-elif:-else:", num);
             }
             else if (i == 4)
             {
                 OperatorsInCode.Add("while ... :", num);
             }
             else if (i == 5)
             {
                 OperatorsInCode.Add("lambda:", num);
             }
         }
     }
     #endregion
     CountFunctions();
     #region operator ()
     int numberOfBrackets = CheckOperator("(");
     CheckOperator(")");
     if (numberOfBrackets > 0)
     {
         OperatorsInCode.Add("()", numberOfBrackets);
     }
     #endregion
     #region operator ,
     int numberOfVirgules = CheckOperator(",");
     if (numberOfVirgules > 0)
     {
         OperatorsInCode.Add(",", numberOfVirgules);
     }
     #endregion
 }