예제 #1
0
        public static void FlattenAllSubBlocks(INode statement)
        {
            if (!(statement is IStatement))
            {
                return;
            }
            if (statement is BlockStatement)
            {
                var childBlockStatements = statement.Children.OfType <BlockStatement>().ToList();
                foreach (var childBlockStatement in childBlockStatements)
                {
                    foreach (var subStatement in childBlockStatement.Statements.ToList())
                    {
                        subStatement.Remove();
                        statement.AddChildBefore(childBlockStatement, subStatement);
                    }
                    childBlockStatement.Remove();
                }
            }

            foreach (var child in statement.Children)
            {
                FlattenAllSubBlocks(child);
            }
        }