Ejemplo n.º 1
0
        private void DoScan(ListenerExtender listenerExtender, int startLine, int errorRertyCount)
        {
            listenerExtender.LineOffset = startLine;
            var contentToScan = buffer.GetContentFrom(startLine);

            try
            {
                Lexer lexer = gherkinDialect.NativeLanguageService.lexer(listenerExtender);
                lexer.scan(contentToScan);
            }
            catch (ScanningCancelledException)
            {
                throw;
            }
            catch (LexingError lexingError)
            {
                HandleError(GetLexingError(lexingError, listenerExtender.LineOffset), lexingError, listenerExtender, errorRertyCount);
            }
            catch (ScanningErrorException scanningErrorException)
            {
                HandleError(scanningErrorException, scanningErrorException, listenerExtender, errorRertyCount);
            }
            catch (Exception ex)
            {
                HandleError(GetUnknownError(ex), ex, listenerExtender, errorRertyCount);
            }
        }
Ejemplo n.º 2
0
        private void DoScan(ListenerExtender listenerExtender, int startLine, int errorRertyCount)
        {
            listenerExtender.LineOffset = startLine;
            var contentToScan = buffer.GetContentFrom(startLine);

            try
            {
                Lexer lexer = languageService.lexer(listenerExtender);
                lexer.scan(contentToScan, null, 0);
            }
            catch (ScanningCancelledException)
            {
                throw;
            }
            catch (LexingError lexingError)
            {
                HandleError(GetLexingError(lexingError, listenerExtender.LineOffset), lexingError, listenerExtender, errorRertyCount);
            }
            catch (ScanningErrorException scanningErrorException)
            {
                HandleError(scanningErrorException, scanningErrorException, listenerExtender, errorRertyCount);
            }
            catch (Exception ex)
            {
                HandleError(GetUnknownError(ex), ex, listenerExtender, errorRertyCount);
            }
        }
Ejemplo n.º 3
0
        private void HandleError(ScanningErrorException scanningErrorException, Exception originalException, ListenerExtender listenerExtender, int errorRertyCount)
        {
            RegisterError(listenerExtender.GherkinListener, scanningErrorException, originalException);

            var position = scanningErrorException.GetPosition(buffer);

//            if (position != null &&
//                position.Line + SKIP_LINES_BEFORE_RETRY <= buffer.LineCount - 1 &&
//                errorRertyCount < MAX_ERROR_RETRY)
            var lastProcessedEditorLine = listenerExtender.LastProcessedEditorLine;
            if (position != null)
                lastProcessedEditorLine = Math.Max(position.Line, lastProcessedEditorLine);

            if (lastProcessedEditorLine + SKIP_LINES_BEFORE_RETRY <= buffer.LineCount - 1 &&
                errorRertyCount < MAX_ERROR_RETRY)
            {
                var restartLineNumber = lastProcessedEditorLine + SKIP_LINES_BEFORE_RETRY;

                DoScan(
                    listenerExtender,
                    restartLineNumber,
                    errorRertyCount + 1);
            }
        }
Ejemplo n.º 4
0
        private void HandleError(ScanningErrorException scanningErrorException, Exception originalException, ListenerExtender listenerExtender, int errorRertyCount)
        {
            RegisterError(listenerExtender.GherkinListener, scanningErrorException, originalException);

            var position = scanningErrorException.GetPosition(buffer);

//            if (position != null &&
//                position.Line + SKIP_LINES_BEFORE_RETRY <= buffer.LineCount - 1 &&
//                errorRertyCount < MAX_ERROR_RETRY)
            var lastProcessedEditorLine = listenerExtender.LastProcessedEditorLine;

            if (position != null)
            {
                lastProcessedEditorLine = Math.Max(position.Line, lastProcessedEditorLine);
            }

            if (lastProcessedEditorLine + SKIP_LINES_BEFORE_RETRY <= buffer.LineCount - 1 &&
                errorRertyCount < MAX_ERROR_RETRY)
            {
                var restartLineNumber = lastProcessedEditorLine + SKIP_LINES_BEFORE_RETRY;

                DoScan(
                    listenerExtender,
                    restartLineNumber,
                    errorRertyCount + 1);
            }
        }
Ejemplo n.º 5
0
        public void Scan(IGherkinListener listener)
        {
            ListenerExtender listenerExtender = new ListenerExtender(gherkinDialect, listener, buffer);

            DoScan(listenerExtender, buffer.LineOffset, 0);
        }
Ejemplo n.º 6
0
 public void Scan(IGherkinListener listener)
 {
     ListenerExtender listenerExtender = new ListenerExtender(languageService, listener, buffer);
     DoScan(listenerExtender, buffer.LineOffset, 0);
 }
Ejemplo n.º 7
0
 public void Scan(IGherkinListener listener)
 {
     ListenerExtender listenerExtender = new ListenerExtender(gherkinDialect, listener, buffer);
     DoScan(listenerExtender, buffer.LineOffset, 0);
 }