Exemplo n.º 1
0
        private void btnParse_Click(object sender, EventArgs e)
        {
            string[] lines = richTextBox1.Text.Split('\n');

            _alphabet    = new List <Letter>();
            _stack       = new Stack();
            _states      = new List <State>();
            _transitions = new List <Transition>();
            _words       = new List <Word>();

            this._parserController = new ParserController(_alphabet, _states, _transitions, _stack, _words);

            this._parserController.Parse(lines);

            this._imageBuilder.BuildGraphVizImage(pbAutomata, _states, _transitions);

            bool actualDfa = this._dfaController.IsDfa(_states, _alphabet);

            this.defineButtonsForUser(actualDfa, btnActual);

            bool expectedDfa = ((ParserController)this._parserController).expectedDfa;

            this.defineButtonsForUser(expectedDfa, btnExpected);

            this.handleDefiningFinite(_transitions, _states, ((ParserController)this._parserController).expectedFinite);

            this.checkForWordsExistance(_words);

            pbAutomata.SizeMode = PictureBoxSizeMode.StretchImage;
        }
Exemplo n.º 2
0
        public MainPresenter(IView view, IViewSettings parseSettings, IMessageService messageService)
        {
            _view           = view;
            _parseSettings  = parseSettings;
            _messageService = messageService;

            _parseSettings.Start += _parseSettings_Start;
            _parseSettings.Close += _parseSettings_Closing;
            _view.NewParcing     += _view_NewParcing;
            _view.SaveData       += _view_SaveData;
            _view.ReadAllData    += _view_ReadData;

            _mainForm         = _view.GetForm();
            _parserController = ParserControllerBuilder.GetController <DataTable>("mock", null, null, ParserType.Agility);
            _parserController.NewDataReceived += _parserController_NewDataReceived;
        }
Exemplo n.º 3
0
        private async void _parseSettings_Start(object sender, ParsingSettings e)
        {
            if (String.IsNullOrWhiteSpace(e.Url) && string.IsNullOrWhiteSpace(e.Source))
            {
                _messageService.ShowError("Данные для парсинга отсутствуют!");
                return;
            }
            else
            if (e.Tags.Length == 0)
            {
                _messageService.ShowError("Теги для парсинга отсутствуют!");
                return;
            }
            else
            if (e.Attributes.Length == 0)
            {
                _messageService.ShowError("Атрибуты для парсинга отсутствуют!");
                return;
            }
            else
            if (string.IsNullOrWhiteSpace(e.Source) & !(Uri.TryCreate(e.Url, UriKind.Absolute, out Uri uri)))
            {
                _messageService.ShowError("Данный URL не валидный!");
                return;
            }


            string[] attrs = e.Attributes;
            _settings = new ParserSettings(e.Tags, attrs);
            ParserType parserType;

            try
            {
                parserType = (ParserType)e.ParserType;
            }
            catch (InvalidCastException ex)
            {
                _messageService.ShowError(ex.Message);
                return;
            }

            try
            {
                _parserController = ParserControllerBuilder.GetController <DataTable>(e.Url, e.Source, _settings, parserType);
                _parserController.NewDataReceived += _parserController_NewDataReceived;
            }
            catch (NotSupportedException ex)
            {
                _messageService.ShowError(ex.Message);
                return;
            }
            catch (NullReferenceException ex)
            {
                _messageService.ShowError(ex.Message);
                return;
            }

            _parseSettings.HideForm();
            bool parsingState = false;

            try
            {
                _view.Reset();
                _view.Write(DateTime.UtcNow.ToLongTimeString() + "  || Выполняется парсинг....");
                await _parserController.ParseAsync();

                parsingState = true;
            }
            catch (ArgumentNullException ex)
            {
                _messageService.ShowError(ex.Message);
                _view.Write(DateTime.UtcNow.ToLongTimeString() + "  ---- Во время парсинга возникла ошибка!");
                parsingState = false;
            }
            finally
            {
                _view.Write(DateTime.UtcNow.ToLongTimeString() + "  || Парсинг " + ((parsingState) ? "успешно " : "не ") + "выполнен");
                _view.ToggleToolStripBusy(false);
            }
        }