private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                label12.Text = "Статус грамматик";
                var rowIndex = e.RowIndex;
                var value    = dataGridView2[0, rowIndex].Value.ToString();
                if (rowIndex == ChainBNF.Count)
                {
                    ChainBNF.Add(new Chain()
                    {
                        Str = value
                    });
                    BildDataGridBNF();
                    return;
                }

                if (string.IsNullOrEmpty(value))
                {
                    ChainBNF.RemoveAt(rowIndex);
                    BildDataGridBNF();
                    return;
                }


                ChainBNF[rowIndex].Str = dataGridView2[0, rowIndex].Value.ToString();
            }
            catch (Exception ex)
            {
                //textBox1.Text += Environment.NewLine + ex.Message;
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (var ch in ChainKS)
                {
                    if (!ChainBNF.Any(x => x.Str.Equals(ch.Str)))
                    {
                        textBox1.Text += Environment.NewLine + "БНФ не содержит цепочку " + ch.Str;
                        label12.Text   = "Не идентичны";
                        return;
                    }
                }

                foreach (var ch in ChainBNF)
                {
                    if (!ChainKS.Any(x => x.Str.Equals(ch.Str)))
                    {
                        textBox1.Text += Environment.NewLine + "КС не содержит цепочку " + ch.Str;
                        label12.Text   = "Не идентичны";
                        return;
                    }
                }

                textBox1.Text += Environment.NewLine + "Цепочки грамматик идентичны";
                label12.Text   = "Идентичны";
            }
            catch (Exception ex)
            {
                textBox1.Text += Environment.NewLine + ex.Message;
            }
        }