public override void generar(Emit.ILGenerator il) { ExprIzq.generar(il); ExprDer.generar(il); il.Emit(Emit.OpCodes.Clt); }
public void ejecutarMetodo(Emit.ILGenerator il, ListaParametros lp) { cuerpoDelMetodo(il, lp); }
public override void generar(Emit.ILGenerator il) { throw new NotImplementedException(); }
public abstract void generar(Emit.ILGenerator il);
public override void generar(Emit.ILGenerator il) { this.Expr.generar(il); TinyCompiler.generador.GeneradorCodigo.Almacenar(Id.Nombre.Texto,il); }
public override void generar(Emit.ILGenerator il) { Sentencias.generar(il); }
public override void generar(Emit.ILGenerator il) { this.ExprIzq.generar(il); this.ExprDer.generar(il); il.Emit(Emit.OpCodes.Ceq); }
public override void generar(Emit.ILGenerator il) { if (!TinyCompiler.generador.GeneradorCodigo.TablaDireccionesSimbolos.ContainsKey(Nombre.Texto)) { throw new System.Exception("ERROR-0007 fallo en analisis semantico Variable no declarada encontrada durante generacion '" + Nombre.Texto + "'"); } else { il.Emit(Emit.OpCodes.Ldloc, TinyCompiler.generador.GeneradorCodigo.TablaDireccionesSimbolos[Nombre.Texto]); } }
public override void generar(Emit.ILGenerator il) { Emit.LocalBuilder tmpVarLogico; Console.WriteLine("Generando Nodo Condicional (IF)"); this.condicion.generar(il); il.Emit(Emit.OpCodes.Ldc_I4_0); //Ingreso constante 0 il.Emit(Emit.OpCodes.Ceq); //Comparo si es falso (es 0) //Almaceno este resultado en una variable temporal tmpVarLogico = il.DeclareLocal(typeof(bool)); il.Emit(Emit.OpCodes.Stloc, tmpVarLogico); //cargo el resultado de la variable temporal il.Emit(Emit.OpCodes.Ldloc, tmpVarLogico); Emit.Label bloqueFalso = il.DefineLabel(); //salto en caso que sea verdadero el resultado es decir es cero la evaluacion del (pila==0) hago el sino il.Emit(Emit.OpCodes.Brtrue, bloqueFalso); Entonces.generar(il); Emit.Label finSi = il.DefineLabel(); il.Emit(Emit.OpCodes.Br, finSi); il.MarkLabel(bloqueFalso); if(Sino!=null) Sino.generar(il); il.MarkLabel(finSi); }
public override void generar(Emit.ILGenerator il) { List<FuncionDef> funs = NucleoLenguaje.Instancia.getFuncBasicas(); foreach (FuncionDef fun in funs) { if(Id.Texto.Equals(fun.Nombre.Texto)) fun.ejecutarMetodo(il, this.Params); } }
public override void generar(Emit.ILGenerator il) { il.Emit(Emit.OpCodes.Ldc_I4, TinyCompiler.generador.GeneradorCodigo.convertir_a_entero(Token.Texto)); }
public override void generar(Emit.ILGenerator il) { Emit.LocalBuilder tmpCondicion; tmpCondicion = il.DeclareLocal(typeof(bool)); Emit.Label sentenciasRepita = il.DefineLabel(); il.MarkLabel(sentenciasRepita); il.Emit(Emit.OpCodes.Nop); //emito primera sentencia vacia Sentencias.generar(il); Condicion.generar(il); il.Emit(Emit.OpCodes.Stloc, tmpCondicion); //almaceno resultado de condicion del mientras il.Emit(Emit.OpCodes.Ldloc, tmpCondicion); //cargo resultado de condicion del mientras il.Emit(Emit.OpCodes.Brfalse, sentenciasRepita); }