Beispiel #1
0
        public MainWindow()
        {
            InitializeComponent();

            var asmb     = Assembly.GetExecutingAssembly();
            var xshdfile = asmb.GetName().Name + ".Code.xshd";

            using (var s = asmb.GetManifestResourceStream(xshdfile))
            {
                using (var reader = new XmlTextReader(s))
                {
                    CodeEditor.SyntaxHighlighting           = HighlightingLoader.Load(reader, HighlightingManager.Instance);
                    CodeEditor_Converted.SyntaxHighlighting = CodeEditor.SyntaxHighlighting;
                }
            }

            DataGrid_DFAPriorityTable.ItemsSource = DataGrid_DFAPriorityTableData;
            DataGrid_LexerTestResult.ItemsSource  = DataGrid_LexerTestResultData;

            CodeEditor.TextArea.TextEntering += CodeEditor_TextArea_TextEntering;
            CodeEditor.TextArea.TextEntered  += TextArea_TextEntered;

            taskFlowManager.TaskResultUpdated += TaskFlowManager_TaskResultUpdated;
            taskFlowManager.TaskResultCleared += TaskFlowManager_TaskResultCleared;

            taskFlowManager.AddTask <DataSource_FromCodeEditor>();
            taskFlowManager.AddTask <Production_Lexer>();
            taskFlowManager.AddTask <Production_Parser>();
            taskFlowManager.AddTask <NFAGenerator_Lexer>();
            taskFlowManager.AddTask <NFAGenerator_Parser>();
            taskFlowManager.AddTask <DFAGenerator>();
            taskFlowManager.AddTask <DFAOptimizer>();
            taskFlowManager.AddTask <DFAPriorityGenerator>();
            taskFlowManager.AddTask <DataSource_FromGrammarComboBoxs>();
            taskFlowManager.AddTask <GrammarCompiler>();

            taskFlowManager.GetTask <DataSource_FromCodeEditor>().BindEditor(CodeEditor);

            CheckBox_NFAGeneratorImageEnable.IsChecked = taskFlowManager.GetTask <NFAGenerator_Parser>().GetImageOutputEnable();
            CheckBox_DFAGeneratorImageEnable.IsChecked = taskFlowManager.GetTask <DFAGenerator>().GetImageOutputEnable();
            CheckBox_DFAOptimizerImageEnable.IsChecked = taskFlowManager.GetTask <DFAOptimizer>().GetImageOutputEnable();

            var grammar_compiler_list = new GrammarCompilerCollection();

            grammar_compiler_list.Add(new GrammarCompiler_LL_1());

            taskFlowManager.GetTask <DataSource_FromGrammarComboBoxs>().Init(grammar_compiler_list, ComboBox_GrammarMajorType, ComboBox_GrammarMinorType);
        }
        public void Init(GrammarCompilerCollection grammarCompilerList, ComboBox GrammarMajorType, ComboBox GrammarMinorType)
        {
            var majortypemap  = new Dictionary <string, int>();
            var majortypelist = new List <string>();

            this.grammarCompilerList = new List <GrammarCompilerCollection>();
            this.GrammarMajorType    = GrammarMajorType;
            this.GrammarMinorType    = GrammarMinorType;

            //find out all major type
            foreach (var item in grammarCompilerList)
            {
                if (!majortypemap.ContainsKey(item.GetMajorType()))
                {
                    this.grammarCompilerList.Add(new GrammarCompilerCollection());
                    majortypemap[item.GetMajorType()] = this.grammarCompilerList.Count - 1;
                    majortypelist.Add(item.GetMajorType());
                }
            }

            //add all grammar compiler to list
            foreach (var item in grammarCompilerList)
            {
                this.grammarCompilerList[majortypemap[item.GetMajorType()]].Add(item);
            }

            //add major and minor type to combobox control
            GrammarMajorType.Items.Clear();
            GrammarMinorType.Items.Clear();

            foreach (var item in majortypelist)
            {
                GrammarMajorType.Items.Add(item);
            }

            WeakEventManager <ComboBox, SelectionChangedEventArgs> .AddHandler(GrammarMajorType, "SelectionChanged", GrammarMajorType_SelectionChanged);

            GrammarMajorType.SelectedIndex = 0;
            WeakEventManager <ComboBox, SelectionChangedEventArgs> .AddHandler(GrammarMinorType, "SelectionChanged", GrammarMinorType_SelectionChanged);

            Result.GrammarCompiler = this.grammarCompilerList[0][0];
            Changed = true;
        }