public void Print_Info(List <Grammatics> element_str, string str_nterminals, string pr) { string s1 = ""; foreach (var element in element_str) { s1 += element.m_name + " "; } LLParserEvent.PrintCompileInfo("\nСтрока:" + s1); LLParserEvent.PrintCompileInfo("Магазин:" + str_nterminals); LLParserEvent.PrintCompileInfo("Правила:" + pr); }
/// <summary> /// Вывод ошибок /// </summary> /// <param name="number"></param> /// <param name="check_number"></param> public void Message_Errors(string number, NumberCheck check_number) { if (number.Length > 8) { check_number = NumberCheck.Error; LLParserEvent.PrintMessage("Длина идентификатора должна быть меньше 8 символов!\nОшибка --> " + number); } if (number.Length == 0) { check_number = NumberCheck.Error; LLParserEvent.PrintMessage("Длина идентификатора должна быть больше 0 символов!\n"); } }
public void Algoritm_Down() { string str_nterminals = m_nterminals[0].m_name + " " + eps.m_name; int index_i = 0, index_j = 0; index_i = m_element_str[0].number; index_j = Search_Index_J(Convert.ToString(str_nterminals[0])); int number_rule = 0; string pr = ""; while (m_tabel[index_j - 1, index_i - 1] != 33) { number_rule = m_tabel[index_j - 1, index_i - 1]; // определение номера правила if (number_rule == 32) { int rule = str_nterminals.IndexOf(" "); str_nterminals = str_nterminals.Remove(0, rule + 1); // удаление первого нетерминала m_element_str.RemoveAt(0); // удаление первого элемента из списка Print_Info(m_element_str, str_nterminals, pr); } else { foreach (var rule in m_rule) { if (rule.number == number_rule) { string[] str_nterminals_array = str_nterminals.Split(' '); str_nterminals_array[0] = rule.m_name; str_nterminals = ""; Scaning_Eps_Rule(str_nterminals_array, ref str_nterminals, rule.number); pr += " " + Convert.ToString(rule.number); Print_Info(m_element_str, str_nterminals, pr); } } } index_i = m_element_str[0].number; string[] laM = str_nterminals.Split(' '); index_j = Search_Index_J(laM[0]); if (m_tabel[index_j - 1, index_i - 1] == 31) { LLParserEvent.PrintCompileInfo("Ошибка при выполнении нисходящего разбора!"); m_element_str.Clear(); break; } } }