コード例 #1
0
        public override void ExitRow([NotNull] CSVParser.RowContext context)
        {
            //skip header
            if (context.col == 0)
            {
                return;
            }

            index++;

            var separator = context.children.Count(x => x.GetText().Equals(";"));

            //riga vuota
            if (context.fields == 0)
            {
                LogRows.Add(new KeyValuePair <int, string>(index, "Riga vuota"));
                r.Delete(context.start, context.stop);
            }
            //separatori in eccesso a fine riga
            else if (separator >= context.fields)
            {
                LogRows.Add(new KeyValuePair <int, string>(index, "Separatori in eccesso alla fine della riga"));

                //cancello i separatori in eccesso alla fine della riga
                for (int i = context.fields; i <= separator; i++)
                {
                    r.Delete(context.SEP(i - 1).Symbol);
                }
            }
            else if (separator < context.col - 1)
            {
                shortRows = true;
                LogRows.Add(new KeyValuePair <int, string>(index, "Riga troppo corta"));
            }
        }
コード例 #2
0
        public void Remove(ParserRuleContext target)
        {
            var info = Finders.TryGetValue(target.GetType(), out var finder)
                ? finder.GetRewriterInfo(target)
                : new DefaultRewriterInfoFinder().GetRewriterInfo(target);

            if (info.Equals(RewriterInfo.RewriterInfo.None))
            {
                return;
            }
            _rewriter.Delete(info.StartTokenIndex, info.StopTokenIndex);
        }
コード例 #3
0
        protected virtual bool VisitClassBodyDeclaration(ClassBodyDeclarationContext ctx)
        {
            var privateModifier  = ctx.modifier().FirstOrDefault(x => x.GetText() == "private");
            var publicModifier   = ctx.modifier().FirstOrDefault(x => x.GetText() == "public");
            var staticModifier   = ctx.modifier().FirstOrDefault(x => x.GetText() == "static");
            var overrideModifier = ctx.modifier().FirstOrDefault(x => x.classOrInterfaceModifier()?.annotation()?.annotationName()?.qualifiedName()?.Identifier().FirstOrDefault()?.GetText() == "Override");

            if (publicModifier == null)
            {
                if (privateModifier == null)
                {
                    _rewriter.InsertBefore(ctx.Start, "internal ");
                }
                else if (staticModifier != null)
                {
                    _rewriter.Replace(privateModifier.Start, privateModifier.Stop, "internal");
                }
            }

            if (overrideModifier != null)
            {
                _rewriter.Delete(overrideModifier.Start, overrideModifier.Stop);
                _rewriter.InsertBefore(ctx.memberDeclaration().Start, "override ");
            }

            return(true);
        }
コード例 #4
0
        public override void ExitMacroDefinition([NotNull] GoToParser.MacroDefinitionContext context)
        {
            base.ExitMacroDefinition(context);

            var macro   = context.macro();
            var name    = macro.macroName().GetText();
            var @params = context.macro().macroParams();

            _macrosParams.Add(name, @params);
            var body = context.macroBody();

            _macrosBodies.Add(name, body);

            _rewrittenTokenStream.Delete(context.Start, context.Stop);
        }
コード例 #5
0
        public override void EnterSelectionstatement([NotNull] CPP14Parser.SelectionstatementContext context)
        {
            var lineSpaces = GetTokenSpaces(context.Start.Column);// for better code formatting

            var isAnIfCondition = context.GetChild(0).GetText().Contains("if");

            if (isAnIfCondition)
            {
                // add a not operator to the condition ---------------------------------------
                var condition           = context.GetChild(2);
                var conditionStartToken = commonTokenStream.Get(condition.SourceInterval.a);
                var conditionEndToken   = commonTokenStream.Get(condition.SourceInterval.b);

                rewriter.Replace(conditionStartToken, conditionEndToken, $"!({condition.GetText()})");
                // ---------------------------------------------------------------------------

                var conditionLabel = GetNewLabel();

                // add goto statement to the if condition ------------------------------------
                var rightParen      = context.GetChild(3);
                var rightParenToken = commonTokenStream.Get(rightParen.SourceInterval.a);
                rewriter.InsertAfter(rightParenToken, $" goto {conditionLabel}");
                // ---------------------------------------------------------------------------

                // check else statement ------------------------------------------------------
                var elseLabelText     = "";
                var elseStatementText = "";
                var elseContext       = context.children.FirstOrDefault(x => x.GetText() == "else");

                if (elseContext != null)
                {
                    var elseToken = commonTokenStream.Get(elseContext.SourceInterval.a);

                    var elseLabel = GetNewLabel();

                    // replace else with goto keyword -------------------------------
                    var elseGotoText = $"goto {elseLabel}";
                    rewriter.Replace(elseToken, elseGotoText);
                    // --------------------------------------------------------------

                    // get else statement -------------------------------------------
                    var elseIndex            = context.children.IndexOf(elseContext);
                    var elseStatementContext = context.children[elseIndex + 1];

                    // removing braces from statement ----------------------------------------------------------
                    elseStatementText = Regex.Replace(elseStatementContext.GetText(), @"^{+|}+$", string.Empty);
                    // -----------------------------------------------------------------------------------------

                    elseStatementText = $"\r\n{lineSpaces + elseStatementText}\r\n";
                    // --------------------------------------------------------------

                    elseLabelText = $"\r\n{lineSpaces+elseLabel}:\r\n";
                }
                // ---------------------------------------------------------------------------

                // add label to the end of condition -----------------------------------------
                var conditionLabelText = $"\r\n{lineSpaces + conditionLabel}:\r\n";
                rewriter.InsertAfter(context.Stop, conditionLabelText + elseStatementText + elseLabelText);
                // ---------------------------------------------------------------------------

                foreach (var statement in context.children)
                {
                    var sText = statement.GetText();
                    if (sText.EndsWith("}"))
                    {
                        var leftBraceToken  = commonTokenStream.Get(statement.SourceInterval.a);
                        var rightBraceToken = commonTokenStream.Get(statement.SourceInterval.b);
                        rewriter.Delete(leftBraceToken);
                        rewriter.Delete(rightBraceToken);
                        //rewriter.Replace(leftBraceToken, $"\r\n");
                        //rewriter.Replace(rightBraceToken, $"\r\n");
                    }
                }
            }

            //Console.WriteLine(context.GetText());
        }