CodeGen.DoExp C# (CSharp) Method

DoExp() public method

public DoExp ( DoExp e ) : void
e Absyn.DoExp
return void
    public void DoExp(DoExp e)
    {
	Label l1 = il.DefineLabel();
	Label l2 = il.DefineLabel();
	Label EndLabel = il.DefineLabel();
	
	for (ExpList el = e.Vars; el != null; el = el.Tail){
	    el.Head.Visit(this);
	}
	il.Emit(OpCodes.Br, l1);
	il.MarkLabel(l2);
	for (ExpList el = e.Vars; el != null; el = el.Tail){
	    DoVarIter((DoVarDef)el.Head);
	}
	il.MarkLabel(l1);
	
	for (ExpList el = e.Conds; el != null; el = el.Tail){
	    ((DoCondExp)el.Head).EndLabel = EndLabel;
	    el.Head.Visit(this);
	}
	il.Emit(OpCodes.Br, l2);
	
	il.MarkLabel(EndLabel);
	
    }