public MainForm() { InitializeComponent(); backgroundWorker1.DoWork += backgroundWorker1_DoWork; backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted; backgroundWorker1.WorkerSupportsCancellation = true; Grammar.GraphBuilder = mGraphWindow.GraphBuilder; //Init DockWindows mErrorList = new ErrorList(mGrammarDoc); OutputDoc mDebugOutputDoc = null; if (Lexer.DebugMode) { mDebugOutputDoc = new OutputDoc(); mDebugOutputDoc.TabText = "Lexer Debug"; mGrammarDoc.mLexerDebugOutput = mDebugOutputDoc; } if (!LoadDockFromCfg()) { mErrorList.Show(dockPanel1, DockState.DockBottomAutoHide); mDerivationTree.Show(dockPanel1, DockState.DockLeftAutoHide); mGraphWindow.Show(dockPanel1, DockState.DockLeftAutoHide); mLevelListDoc.Show(dockPanel1, DockState.DockLeftAutoHide); if (Lexer.DebugMode) { mDebugOutputDoc.Show(dockPanel1, DockState.Document); } mOutputDoc.Show(dockPanel1, DockState.Document); mTaskDoc.Show(dockPanel1, DockState.DockLeft); mGenerationOptionsForm.Show(dockPanel1, DockState.DockLeft); mGrammarDoc.Show(dockPanel1, DockState.DockLeft); } mTaskDoc.Init(); mGrammarDoc.Init(); mGrammarDoc.mDerivationTree = mDerivationTree; mGenerationMode = eGenerationMode.IterativeTopDown; iterativeTopDownToolStripMenuItem.Checked = true; recursiveTopDownToolStripMenuItem.ToolTipText = "Рекурсивный обход сверху вниз, слева направо"; iterativeTopDownToolStripMenuItem.ToolTipText = @"Обход такой же, как и RecursiveTopDown, только выполняется итеративно, чтобы избежать возможности StackOverflow Это основной рекомендуемый режим, поскольку он необходим для реализации семантических связей (обращение к уже выведенной части программы)."; iterativeLeftRightToolStripMenuItem.ToolTipText = @"Вывод по слоям (слева направо сверху вниз). Для демонстрации"; mLevelListDoc.OutputDoc = mOutputDoc; }