private static void CheckStatement(SyntaxNodeAnalysisContext context, StatementSyntax statement,
                                           IEnumerable <StatementSyntax> precedingStatements)
        {
            if (statement.ChildNodes().Count() < 2)
            {
                return;
            }

            var precedingStatement = precedingStatements
                                     .FirstOrDefault(preceding => EquivalenceChecker.AreEquivalent(statement, preceding));

            if (precedingStatement != null)
            {
                ReportSyntaxNode(context, statement, precedingStatement, "branch");
            }
        }
Exemple #2
0
        static public List <Object> ReadBlock(StatementSyntax blockstatement)
        {//debug
            String            program = "";
            String            variableDeclarations = "";
            List <SyntaxNode> original             = new List <SyntaxNode>();

            foreach (StatementSyntax statement in blockstatement.ChildNodes().OfType <StatementSyntax>())
            {
                if (statement.GetType().Name == "IfStatementSyntax")
                {
                    program += ReadIfStatement(statement);
                    program  = program + strings["end-if"];
                }
                else
                {
                    if (statement.GetType().Name == "LocalDeclarationStatementSyntax")
                    {
                        if (statement.ToFullString().Contains("="))
                        {
                            if (statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray()[0] == "String" || statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray()[0] == "string")
                            {
                                variableDeclarations += statement.ToFullString().Split("=")[0] + "= new " + statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray()[0] + "(\"\");\n";
                            }
                            else
                            {
                                variableDeclarations += statement.ToFullString().Split("=")[0] + "= new " + statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray()[0] + "();\n";
                            }
                            program += statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray()[statement.ToFullString().Split("=")[0].Split(" ").Where(e => !string.IsNullOrEmpty(e)).ToArray().Count() - 1] + " =" + statement.ToFullString().Split("=")[1]; //foutje als er een string aanwezig is met =
                        }
                        else
                        {
                            variableDeclarations += statement.ToFullString();
                        }
                    }
                    else if (!original.Contains(statement.Parent))
                    {
                        program = program + statement.ToFullString();
                    }
                }
            }
            List <Object> results = new List <Object>();

            results.Add(program);
            results.Add(variableDeclarations);
            return(results);
        }
Exemple #3
0
        private IEnumerable <StatementSyntax> JoinStatements(StatementSyntax firstStatements, StatementSyntax secondStatements)
        {
            var statements = new List <StatementSyntax>();

            if (firstStatements.IsKind(SK.Block))
            {
                statements.AddRange(firstStatements.ChildNodes().OfType <StatementSyntax>());
            }
            else
            {
                statements.Add(firstStatements);
            }

            if (secondStatements.IsKind(SK.Block))
            {
                statements.AddRange(secondStatements.ChildNodes().OfType <StatementSyntax>());
            }
            else
            {
                statements.Add(secondStatements);
            }

            return(statements);
        }