public override void Visit(FunctionDclNode node) { Console.Write("func " + node.ReturnType + " "); node.Id.Accept(this); Console.Write(" ("); node.FormalParamNodes?.ForEach(x => { if (node.FormalParamNodes.IndexOf(x) != 0) { Console.Write(", "); } x.Accept(this); }); Console.Write(")"); node.FuncBody.Accept(this); }
public override void Visit(FunctionDclNode node) { CSharpString.Append("static "); if (node.ReturnType.Contains("[]")) { CSharpString.Append("List<"); } CSharpString.Append(node.ReturnType.Replace("[]", "")); //midlertidig løsning til at sætte _ på typen hvis den ikke er primitiv eller void. if (!IsPrimitiveType(node.ReturnType.Replace("[]", "")) && node.ReturnType != "void") { CSharpString.Append("_"); } if (node.ReturnType.Contains("[]")) { CSharpString.Append("> "); } CSharpString.Append(" "); // Checks if the function declared is main if (node.Id.Id == "main") { CSharpString.Append("Main"); } else { node.Id.Accept(this); } CSharpString.Append("("); node.FormalParamNodes?.ForEach(x => { if (node.FormalParamNodes.IndexOf(x) != 0) { CSharpString.Append(", "); } x.Accept(this); }); CSharpString.Append(")"); node.FuncBody.Accept(this); }
internal abstract void Visit(FunctionDclNode node);
public abstract void Visit(FunctionDclNode node);