Пример #1
0
        private void f_btnLoadGram_Click(object sender, EventArgs e)
        {
            if (File.Exists(f_txtFileGram.Text))
            {
                try
                {
                    cScanner _scanner = null;
                    if (f_txtFileGram.Text.EndsWith(".xml"))
                    {
                        _scanner = new cXMLScanner(f_txtFileGram.Text);
                    }
                    else if (f_txtFileGram.Text.EndsWith(".txt"))
                    {
                        _scanner = new cTextScanner(f_txtFileGram.Text);
                    }

                    if (_scanner != null)
                    {
                        f_gbStep3.Enabled      = false;
                        f_btnViewTable.Enabled = false;
                        f_gbStep4.Enabled      = false;
                        f_rtbGram.Clear();

                        cf_parser = new cParser(_scanner, Application.StartupPath + @"\metagram.xml");
                        cf_parser.cm_Parse();
                        cf_generator.cm_Init(cf_parser);
                        _scanner.Dispose();

                        // Вывод текста грамматики
                        cm_showGram(null as cNotLL1Exception);
                        f_gbStep3.Enabled      = true;
                        f_btnViewTable.Enabled = false;
                        f_gbStep4.Enabled      = false;
                        cm_showStatus("Загрузка грамматики завершена.", false);
                    }
                    else
                    {
                        cm_showStatus("Неподдерживаемый формат файла.", true);
                    }
                }
                catch (cNotLL1Exception _ex)
                {
                    cm_showGram(_ex);
                    cm_showStatus(_ex.Message, true);
                }
                catch (cParserException _ex)
                {
                    cm_showGram(_ex);
                    cm_showStatus(_ex.Message, true);
                }
                catch (Exception _ex)
                {
                    cm_showStatus(_ex.Message, true);
                }
            }
            else
            {
                cm_showStatus("Выбранного файла не существует.", true);
            }
        }
Пример #2
0
 public cLLParser(cScanner a_scanner, string a_filename)
 {
     cf_scanner   = a_scanner;
     cf_dataTable = new DataTable("table");
     cf_dataTable.Columns.Add("i", typeof(int));
     cf_dataTable.Columns.Add("terminals", typeof(string[]));
     cf_dataTable.Columns.Add("jump", typeof(int));
     cf_dataTable.Columns.Add("accept", typeof(bool));
     cf_dataTable.Columns.Add("stack", typeof(bool));
     cf_dataTable.Columns.Add("return", typeof(bool));
     cf_dataTable.Columns.Add("error", typeof(bool));
     cf_dataTable.Columns.Add("action", typeof(string));
     cf_dataTable.ReadXml(a_filename);
 }
Пример #3
0
 public cParser(cScanner a_scanner, string a_filename)
 {
     cf_scanner = a_scanner;
     cf_dataTable = new DataTable("table");
     cf_dataTable.Columns.Add("i", typeof(int));
     cf_dataTable.Columns.Add("terminals", typeof(string[]));
     cf_dataTable.Columns.Add("jump", typeof(int));
     cf_dataTable.Columns.Add("accept", typeof(bool));
     cf_dataTable.Columns.Add("stack", typeof(bool));
     cf_dataTable.Columns.Add("return", typeof(bool));
     cf_dataTable.Columns.Add("error", typeof(bool));
     cf_dataTable.Columns.Add("action", typeof(string));
     cf_dataTable.ReadXml(a_filename);
 }
Пример #4
0
 public cLRParser(cScanner a_scanner, string a_filename)
 {
     cf_scanner = a_scanner;
     cf_dataTable = new DataTable("table");
     cf_dataTable.ReadXml(a_filename);
 }
Пример #5
0
        private void f_btnLoadGramLL_Click(object sender, RoutedEventArgs e)
        {
            if (File.Exists(f_txtFileGram.Text))
            {
#if DEBUG
#else
                try
#endif
                {
                    cScanner _scanner = null;
                    if (f_txtFileGram.Text.EndsWith(".xml"))
                    {
                        _scanner = new cXMLScanner(f_txtFileGram.Text);
                    }
                    else if (f_txtFileGram.Text.EndsWith(".txt"))
                    {
                        _scanner = new cTextScanner(f_txtFileGram.Text);
                    }

                    if (_scanner != null)
                    {
                        f_gbStep3.IsEnabled      = false;
                        f_btnViewTable.IsEnabled = false;
                        f_gbStep4.IsEnabled      = false;
                        f_rtbGram.Document.Blocks.Clear();

                        cf_parser = new cLLParser(_scanner, System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\metagram.LL.xml");
                        cf_parser.cm_Parse();
                        cf_generator.cm_Init(cf_parser);
                        _scanner.Dispose();

                        // Вывод текста грамматики
                        cm_showGram(null as cNotLL1Exception);
                        f_gbStep3.IsEnabled      = true;
                        f_btnViewTable.IsEnabled = false;
                        f_gbStep4.IsEnabled      = false;
                        cm_showStatus("Загрузка грамматики завершена.", false);
                    }
                    else
                    {
                        cm_showStatus("Неподдерживаемый формат файла.", true);
                    }
                }
#if DEBUG
#else
                catch (cNotLL1Exception _ex)
                {
                    cm_showGram(_ex);
                    cm_showStatus(_ex.Message, true);
                }
                catch (cParserException _ex)
                {
                    cm_showGram(_ex);
                    cm_showStatus(_ex.Message, true);
                }
                catch (Exception _ex)
                {
                    cm_showStatus(_ex.Message, true);
                }
#endif
            }
            else
            {
                cm_showStatus("Выбранного файла не существует.", true);
            }
        }
Пример #6
0
 public cLRParser(cScanner a_scanner, string a_filename)
 {
     cf_scanner   = a_scanner;
     cf_dataTable = new DataTable("table");
     cf_dataTable.ReadXml(a_filename);
 }