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 = "";
        }
Exemple #2
0
 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);
 }
Exemple #3
0
        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);
                }
            }
        }