//Función que hace push a la pila de saltos con GoTo public void pushGoTo() { //Se crea un objeto de tipo GoTo GoTo jump = new GoTo(lineCont); //Se agrega el cuádruplo al buffer de cuádruplos quadrupleBuffer.Add(jump); //Se hace push a la pila de saltos, el valor es relativo al tamaño del buffer para saber a qué salto //se refiere para asignarle la línea a la que va a brincar jumpStack.Push(quadrupleBuffer.Count - 1); //Se incrementa el contador de líneas lineCont++; }
//Función que se encarga de hacer las acciones necesarias para procesar el For public void solveFor() { //Se resuelve la parte de la condición //El for se comporta como el if, por eso se trata como tal popJumpStack(); //El siguiente valor de la pila guarda la línea a donde empiezan las operaciones de la condición if (jumpStack.Count == 0) { return; } int lineReturn = (int)jumpStack.Pop(); //Se crea el goTo para regresarse a los cuádruplos de la condición y que se cree el ciclo GoTo goTo = new GoTo(lineReturn, lineCont); //Se manda a escribir el cuádruplo writeIntermediateCode(goTo); }