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")); } }
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); }
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); }
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); }
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()); }