예제 #1
0
        public void Emit()
        {
            Root.Add(Main);

            var e = new Emitter();
            Root.ForEach(node => node.Emit(e));
        }
예제 #2
0
        public void Emit(Emitter e)
        {
            e.EmitLine(".method static void " + Name + "()");
            e.Indent();
            Variables.Emit(e);

            foreach (var item in Body)
                item.Emit(e);

            e.EmitLine("ret");
            e.Outdent();
        }
예제 #3
0
        public void Emit(Emitter e)
        {
            foreach (var arg in Args)
                arg.Emit(e);

            e.EmitLine("call " + ReturnType.Name + " " + Name.Value);
        }
예제 #4
0
 public void Emit(Emitter e)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public void Emit(Emitter e)
 {
     e.Emit(".locals init (");
     e.Emit(string.Join(", ", variables.Select(v => v.Type.Name)));
     e.EmitLine(")");
 }