示例#1
0
        //public int newlabel()
        //{
        //    return CurrentGenerator.AllocLabel();
        //}

        //public void emitLabel(int i)
        //{
        //    CurrentGenerator.Label("L" + i.ToString());

        //}

        //public void emit(string s)
        //{
        //    CurrentIO.EmitLine(s);
        //}

        //public void emitSrc(string s)
        //{
        //    CurrentIO.EmitSource(s);
        //}

        public void emitfunSet(Expr exp, Expr toVar)
        {
            FuncCall c = exp as FuncCall;

            if (c.FunParams?.Count() > 0)
            {
                foreach (PassParam item in c.FunParams)
                {
                    if (item.Param is FuncCall)
                    {
                        Temp t = new Temp(toVar.Type);
                        CurrentGenerator.Temp(t);
                        emitfunSet(item.Param, t);
                        CurrentGenerator.Param(t);
                    }
                    else
                    {
                        CurrentGenerator.Param(item);
                    }
                }
            }
            CurrentGenerator.Call(toVar, c.Func);
            CurrentGenerator.CallEnd();
        }
示例#2
0
 public void Set(Temp t, Expr exp2)
 {
     IntermediateCode.CurrentIO.EmitLine(t + " = " + exp2);
 }
示例#3
0
 public void Temp(Temp t)
 {
     IntermediateCode.CurrentIO.EmitLine(t.Type + " " + t);
 }
示例#4
0
 public void Temp(Temp t)
 {
 }