private int[,] _states; // массив сосотояний #endregion Fields #region Constructors public TableOfStates(int[,] states, ClassOfSymbol[] massOfClassOfSymbol) { this._states = states; this._massOfClassOfSymbol = massOfClassOfSymbol; this._countOfStates = states.Length; this._currentState = 0; this._currentClassOfSymbol = 0; this._newState = 0; this._buffer = ""; }
private void buttonCreateClassOfSymbol_Click(object sender, EventArgs e) { string nameClassOfSymbol = textBoxEnterNameOfClassSymbol.Text; string interval = textBoxEnterInterval.Text; textBoxEnterNameOfClassSymbol.Clear(); textBoxEnterInterval.Clear(); switch (interval) { case "\\": interval = "\\" + interval; break; case "^": interval = "\\" + interval; break; case "$": interval = "\\" + interval; break; case ".": interval = "\\" + interval; break; case "[": interval = "\\" + interval; break; case "]": interval = "\\" + interval; break; case "|": interval = "\\" + interval; break; case "(": interval = "\\" + interval; break; case ")": interval = "\\" + interval; break; case "?": interval = "\\" + interval; break; case "*": interval = "\\" + interval; break; case "+": interval = "\\" + interval; break; case "{": interval = "\\" + interval; break; case "}": interval = "\\" + interval; break; case "\"": interval = "\\" + interval; break; case "'": interval = "\\" + interval; break; case "%": interval = "\\" + interval; break; } ClassOfSymbol newClassOfSymbol = new ClassOfSymbol(nameClassOfSymbol, interval); _listClassOfSymbol.Add(newClassOfSymbol); }
private void LoadToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog.InitialDirectory = Directory.GetCurrentDirectory(); if (openFileDialog.ShowDialog() == DialogResult.OK) { try { this._listClassOfSymbol.Clear(); this._listOfLexemes.Clear(); while (0 < dataGridViewTableOfState.Rows.Count) { dataGridViewTableOfState.Rows.RemoveAt(0); } while (1 < dataGridViewTableOfState.Columns.Count) { dataGridViewTableOfState.Columns.RemoveAt(dataGridViewTableOfState.Columns.Count - 1); } dataGridViewLexemes.Rows.Clear(); StreamReader sr = new StreamReader(openFileDialog.FileName); int countClassOfSymbols = Convert.ToInt32(sr.ReadLine().Split(new char[] {':'})[1]); for (int i = 0; i < countClassOfSymbols; i++) { string[] blankClassOfSymbol = sr.ReadLine().Trim().Split(new char[] {' '}); ClassOfSymbol newClassOfSymbol = new ClassOfSymbol(blankClassOfSymbol[0], blankClassOfSymbol[1]); this._listClassOfSymbol.Add(newClassOfSymbol); } int countLexemes = Convert.ToInt32(sr.ReadLine().Split(new char[] {':'})[1]); for (int i = 0; i < countLexemes; i++) { string[] blankLexeme = sr.ReadLine().Trim().Split(new char[] {' '}); string name = blankLexeme[0]; int countCharToReturn = Convert.ToInt32(blankLexeme[1]); int finalState = Convert.ToInt32(blankLexeme[2]); Lexeme newLexeme = new Lexeme(name, countCharToReturn, finalState); this._listOfLexemes.Add(newLexeme); } FillViewLexemes(); CreateColumnViewTableOfStatel(); int countStatesOfMachine = Convert.ToInt32(sr.ReadLine().Split(new char[] {':'})[1]); for (int i = 0; i < countStatesOfMachine; i++) { dataGridViewTableOfState.Rows.Add(); dataGridViewTableOfState.Rows[i].HeaderCell.Value = "S" + i.ToString(); string[] massRow = sr.ReadLine().Trim().Split(new char[] {' '}); for (int j = 0; j < massRow.Length; j++) { dataGridViewTableOfState[j, i].Value = Convert.ToInt32(massRow[j]); } } sr.Close(); panelClassOfSymbol.Visible = false; panelLexem.Visible = false; panelTableOfState.Visible = true; } catch (Exception ex) { const string caption = "Ошибка в выражении!"; var result = MessageBox.Show(ex.Message, caption, MessageBoxButtons.OK, MessageBoxIcon.Question); } } }