コード例 #1
0
 public void Append(CSTWriter w)
 {
     w.Append('B');
     w.Append(Id);
     w.Append(':');
     w.EndLine();
     w.Indented
         (w2 =>
     {
         if (Sources.Count > 0)
         {
             w2.Append("(* from ");
             for (var i = 0; i < Sources.Count; i++)
             {
                 if (i > 0)
                 {
                     w2.Append(", ");
                 }
                 w2.Append("B");
                 w2.Append(Sources[i].Id);
             }
             w2.Append(" *)");
             w2.EndLine();
         }
         for (var i = 0; i < Block.Body.Count; i++)
         {
             Block.Body[i].Append(w2);
             w2.EndLine();
         }
         AppendLast(w);
         w2.EndLine();
     });
 }
コード例 #2
0
ファイル: AssemblyDef.cs プロジェクト: tralivali1234/IL2JS
 public void Append(CSTWriter w)
 {
     foreach (var customAttribute in CustomAttributes)
     {
         customAttribute.Append(w);
         w.EndLine();
     }
     w.Append("assembly ");
     Name.Append(w);
     w.Append(" {");
     w.EndLine();
     w.Indented(w2 => {
         foreach (var sn in References)
         {
             w2.Append(".reference ");
             sn.Append(w2);
             w2.EndLine();
         }
         if (EntryPoint != null)
         {
             w2.Append(".entry ");
             EntryPoint.Append(w2);
             w2.EndLine();
         }
         foreach (var namedTypeDef in Types)
         {
             namedTypeDef.AppendDefinition(w2);
             w2.EndLine();
         }
     });
     w.Append('}');
 }
コード例 #3
0
ファイル: MemberDef.cs プロジェクト: tralivali1234/IL2JS
        public override void AppendDefinition(CSTWriter w)
        {
            base.AppendDefinition(w);
            if (TypeParameters.Count > 0)
            {
                w.Append('<');
                for (var i = 0; i < TypeParameters.Count; i++)
                {
                    if (i > 0)
                    {
                        w.Append(',');
                    }
                    w.Append("!!");
                    w.Append(TypeParameters[i].Index);
                }
                w.Append('>');
            }
            w.Append('(');
            for (var i = 0; i < ValueParameters.Count; i++)
            {
                if (i > 0)
                {
                    w.Append(',');
                }
                ValueParameters[i].Type.Append(w);
            }
            w.Append(')');
            if (Result != null)
            {
                w.Append(':');
                Result.Append(w);
            }
            var instructions = Instructions(w.Global);

            if (instructions != null)
            {
                w.Append(" {");
                w.EndLine();
                w.Indented
                    (w2 =>
                {
                    for (var i = 0; i < Locals.Count; i++)
                    {
                        w2.Append(".local ");
                        w2.Append(i);
                        w2.Append(':');
                        Locals[i].Type.Append(w2);
                        w2.EndLine();
                    }
                    instructions.Append(w2);
                });
                w.Append('}');
            }
        }
コード例 #4
0
ファイル: CSTMethod.cs プロジェクト: tralivali1234/IL2JS
 public void Append(CSTWriter w)
 {
     w.Append("method ");
     w.Append(CompEnv.Method.Name);
     w.Append('(');
     for (var i = 0; i < CompEnv.ValueParameterIds.Count; i++)
     {
         if (i > 0)
         {
             w.Append(", ");
         }
         CompEnv.ValueParameterIds[i].Append(w);
         w.Append(':');
         CompEnv.Method.ValueParameters[i].Type.Append(w);
     }
     w.Append("){");
     w.EndLine();
     w.Indented
         (w2 =>
     {
         foreach (var kv in CompEnv.Variables)
         {
             if (kv.Value.ArgLocal == ArgLocal.Local)
             {
                 w2.Append("var ");
                 kv.Value.Id.Append(w2);
                 w2.Append(':');
                 kv.Value.Type.Append(w2);
                 if (kv.Value.IsInit)
                 {
                     w2.Append("=default");
                 }
                 w2.Append(';');
                 w2.EndLine();
             }
         }
         Body.Append(w2);
     });
     w.Append('}');
     w.EndLine();
 }