part #2
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
// Copyright (c) StellaOps. All rights reserved.
|
||||
// Licensed under BUSL-1.1. See LICENSE in the project root.
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace StellaOps.BinaryIndex.Decompiler;
|
||||
|
||||
public sealed partial class DecompiledCodeParser
|
||||
{
|
||||
private static int CountNodes(AstNode node)
|
||||
{
|
||||
var count = 1;
|
||||
foreach (var child in node.Children)
|
||||
{
|
||||
count += CountNodes(child);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
private static int ComputeDepth(AstNode node)
|
||||
{
|
||||
if (node.Children.Length == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
var maxDepth = 0;
|
||||
foreach (var child in node.Children)
|
||||
{
|
||||
var depth = ComputeDepth(child);
|
||||
if (depth > maxDepth)
|
||||
{
|
||||
maxDepth = depth;
|
||||
}
|
||||
}
|
||||
|
||||
return 1 + maxDepth;
|
||||
}
|
||||
|
||||
private static ImmutableArray<AstPattern> ExtractPatterns(AstNode node)
|
||||
{
|
||||
var patterns = new List<AstPattern>();
|
||||
|
||||
foreach (var child in node.Children)
|
||||
{
|
||||
patterns.AddRange(ExtractPatterns(child));
|
||||
}
|
||||
|
||||
return [.. patterns];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user