コード例 #1
0
        private void OnParsingProcessBtnClicked(object sender, EventArgs args)
        {
            syntacticalCoverModel.Clear();

            parsingTaskLabel.Markup = "-";

            // We set the tokens from the previous step.
            controller.SetStartTokens(MainRecognizerWindow.TokenizingWidget.ResultTokens);

            // We set the rules library.
            SyntacticalRulesLibrary.Instance.ClearRules();

            List <SyntacticalRule> rules =
                Config.RecognizerConfig.Instance.SyntacticalRules;

            foreach (SyntacticalRule rule in  rules)
            {
                SyntacticalRulesLibrary.Instance.AddRule(rule);
            }

            SyntacticalRulesLibrary.Instance.StartRule = rules[0];

            parsingButtonsNB.Page = 1;

            currentNode = null;

            controller.Next(ControllerStepMode.StepByStep);
        }
コード例 #2
0
        private void OnTokenizingControllerProcessFinished(object sender, EventArgs args)
        {
            Application.Invoke(delegate(object resender, EventArgs a)
            {
                if (!tokenizingFinished)
                {
                    tokenizingFinished                   = true;
                    unassistedTaskNameLabel.Text         = "Análisis léxico";
                    unassistedGlobalProgressBar.Fraction = 0.5;
                    tokenizingController.Next(ControllerStepMode.UntilEnd);
                }
                else
                {
                    List <Token> result = tokenizingController.Result;

                    bool fail = false;

                    foreach (Token t in result)
                    {
                        if (t == null)
                        {
                            fail = true;
                            break;
                        }
                    }

                    if (fail)
                    {
                        OkDialog.Show(this.MainRecognizerWindow.Window,
                                      MessageType.Warning,
                                      "El análisis léxico falló, hubo ítems que no concordaron con ninguna regla léxica.\nPrueba a añadir más reglas léxicas y vuelve a intentarlo.");

                        unassistedControlHBB.Sensitive = true;
                        return;
                    }

                    unassistedTaskNameLabel.Text         = "Análisis sintáctico";
                    unassistedGlobalProgressBar.Fraction = 0.66;

                    SyntacticalRulesLibrary.Instance.ClearRules();
                    foreach (SyntacticalRule rule in
                             Config.RecognizerConfig.Instance.SyntacticalRules)
                    {
                        SyntacticalRulesLibrary.Instance.AddRule(rule);
                    }

                    SyntacticalRulesLibrary.Instance.StartRule =
                        Config.RecognizerConfig.Instance.SyntacticalRules[0];
                    parsingController.SetStartTokens(result);
                    parsingController.Next(ControllerStepMode.UntilEnd);
                }
            });
        }