Exemplo n.º 1
0
        public override void GenCode(ICodeGenerator cg)
        {
            var gen      = cg.GetGenerator;
            var endLabel = gen.DefineLabel();

            ConditionExp.GenCode(cg);
            gen.Emit(OpCodes.Brfalse, endLabel);
            ThenInstruction.GenCode(cg);
            gen.MarkLabel(endLabel);
        }
Exemplo n.º 2
0
        public override void GenCode(ICodeGenerator cg)
        {
            var gen       = cg.GetGenerator;
            var endLabel  = gen.DefineLabel();
            var elseLabel = gen.DefineLabel();

            ConditionExp.GenCode(cg);
            gen.Emit(OpCodes.Brfalse, elseLabel);//Si la condicion es falsa salto al else

            ThenInstruction.GenCode(cg);
            gen.Emit(OpCodes.Br, endLabel);//si fue verdadera despues de generar el thenInstruction y salto a la endLabel para terminar

            gen.MarkLabel(elseLabel);
            ElseInstruction.GenCode(cg);//si salte al else genero el ElseInstruction y termino

            gen.MarkLabel(endLabel);
        }