private bool TryDecompileProcedure(EvaluatedProcedure evaluatedProcedure, out ProcedureDeclaration declaration) { LogInfo($"Decompiling procedure: {evaluatedProcedure.Procedure.Name}"); InitializeProcedureDecompilationState(evaluatedProcedure); if (!TryCompositeEvaluatedInstructions(evaluatedProcedure.Statements, out var statements)) { LogError("Failed to composite evaluated instructions"); declaration = null; return(false); } declaration = new ProcedureDeclaration( new TypeIdentifier(evaluatedProcedure.ReturnKind), new Identifier(ValueKind.Procedure, evaluatedProcedure.Procedure.Name), evaluatedProcedure.Parameters, new CompoundStatement(statements)); return(true); }
// // Procedure decompilation // private void InitializeProcedureDecompilationState(EvaluatedProcedure procedure) { mEvaluatedProcedure = procedure; }