Esempio n. 1
0
 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);
        }
Esempio n. 3
0
 internal abstract void Visit(FunctionDclNode node);
Esempio n. 4
0
 public abstract void Visit(FunctionDclNode node);