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);
                }
            });
        }
 protected override void NextStep(ControllerStepMode mode)
 {
     parsingNextButtonsAlign.Sensitive = false;
     controller.Next(mode);
 }