} // End EnterExternalDeclaration public override void ExitExternalDeclaration([NotNull] CParser.ExternalDeclarationContext context) { Console.WriteLine(); // // Display the prototype using what we parsed // foreach (string sc in function_def.specifiers) { Console.WriteLine(sc); } Console.WriteLine(function_def.func_name); Console.WriteLine("\t("); foreach (Api_Param p in function_def.parameters) { Console.Write($"\t"); if (p.is_input) { Console.Write("INPUT "); } if (p.is_output) { Console.Write("OUTPUT "); } Console.Write($"{p.type_qualifier} {p.type} "); foreach (string s in p.storage_class) { Console.Write($"{s} "); } Console.WriteLine($"{p.param_name}"); } Console.WriteLine("\t);\n"); // // Clear all context info // #if false function_def.parameters.Clear(); cur_parameter.clear(); function_def.specifiers.Clear(); function_def.ret_type_idx = 0; function_def.func_name = string.Empty; #endif } // End ExitExternalDeclaration
} // End ExitDirectDeclarator public override void EnterExternalDeclaration([NotNull] CParser.ExternalDeclarationContext context) { var text = context.GetText(); Console.WriteLine($"Prototype: {text} "); in_params_list = false; function_def.specifiers = new List <string> (); function_def.ret_type_idx = 0; function_def.func_name = string.Empty; function_def.parameters = new List <Api_Param> (); } // End EnterExternalDeclaration
private void AnalyzeExternalDeclaration( CParser.ExternalDeclarationContext externalDeclaration) { var functionDefinition = externalDeclaration.functionDefinition(); var declaration = externalDeclaration.declaration(); if (functionDefinition != null) { AnalyzeFunctionDefinition(functionDefinition); } else if (declaration != null) { AnalyzeDeclaration(declaration); } }
protected void GenerateExternalDeclaration( CParser.ExternalDeclarationContext externalDeclaration) { var functionDefinition = externalDeclaration.functionDefinition(); var declaration = externalDeclaration.declaration(); if (functionDefinition != null) { GenerateFunctionDefinition(functionDefinition); } else if (declaration != null) { GenerateDeclaration(declaration); } }