using Canon.Core.CodeGenerators; using Canon.Core.Enums; namespace Canon.Core.SyntaxNodes; public class Subprogram : NonTerminatedSyntaxNode { public override NonTerminatorType Type => NonTerminatorType.Subprogram; /// /// 子程序头部 /// public SubprogramHead Head => Children[0].Convert(); /// /// 子程序体 /// public SubprogramBody Body => Children[2].Convert(); public static Subprogram Create(List children) { return new Subprogram { Children = children }; } public override void GenerateCCode(CCodeBuilder builder) { //子函数头 Head.GenerateCCode(builder); //子函数体 builder.AddString("{"); Body.GenerateCCode(builder); builder.AddString("}"); } }