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; } }
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; }
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); } }
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 }