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); } }
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); }
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); }
public cLRParser(cScanner a_scanner, string a_filename) { cf_scanner = a_scanner; cf_dataTable = new DataTable("table"); cf_dataTable.ReadXml(a_filename); }
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); } }