Beispiel #1
0
 protected override void TranslateFunctionDefinition(List <string> output, ParseTree.FunctionDefinition functionDef)
 {
     output.Add(this.CurrentTabIndention);
     output.Add("def v_");
     output.Add(functionDef.NameToken.Value);
     output.Add("(");
     for (int i = 0; i < functionDef.ArgNames.Length; ++i)
     {
         if (i > 0)
         {
             output.Add(", ");
         }
         output.Add("v_" + functionDef.ArgNames[i].Value);
     }
     output.Add("):\r\n");
     this.CurrentIndention++;
     Translate(output, functionDef.Code);
     this.CurrentIndention--;
     output.Add("\r\n");
 }
Beispiel #2
0
        protected override void TranslateFunctionDefinition(List <string> output, ParseTree.FunctionDefinition functionDef)
        {
            Annotation returnType = functionDef.GetAnnotation("type");
            string     type       = returnType == null ? "Object" : this.JavaPlatform.GetTypeStringFromString(returnType.GetSingleArgAsString(null), false, false);

            output.Add(this.CurrentTabIndention);
            output.Add("public static ");
            output.Add(type);
            output.Add(" v_");
            output.Add(functionDef.NameToken.Value);
            output.Add("(");
            for (int i = 0; i < functionDef.ArgNames.Length; ++i)
            {
                if (i > 0)
                {
                    output.Add(", ");
                }
                Annotation annotation = functionDef.ArgAnnotations[i];
                string     argType    = annotation == null ? "Object" : annotation.GetSingleArgAsString(null);
                output.Add(this.JavaPlatform.GetTypeStringFromString(argType, false, false));
                output.Add(" v_");
                output.Add(functionDef.ArgNames[i].Value);
            }
            output.Add(") {");
            output.Add(this.NL);

            this.CurrentIndention++;
            Executable[] code = functionDef.Code;
            if (functionDef.GetAnnotation("omitReturn") != null)
            {
                Executable[] newCode = new Executable[code.Length - 1];
                Array.Copy(code, newCode, newCode.Length);
                code = newCode;
            }
            this.Translate(output, code);
            this.CurrentIndention--;

            output.Add(this.CurrentTabIndention);
            output.Add("}");
            output.Add(this.NL);
        }