Lenguajes y autómatas II

Generacion de codigo intermedio:

instrucciones de control

- ACEVEDO MALDONADO JOSUÉ.
- MORALES MARTINEZ MARÍA.
- OLIVERA ROSAS LUIS MIGUEL.
- PÉREZ CARRERA CARLOS FRANCISCO.
- RUIZ GONZALEZ ALEXANDER

Las condiciones deben expresarse de manera lo más 
sencilla posible de tal forma que puedan evaluarse 
en cortocircuito.

Denota la semántica de algunos operadores booleanos en 
algunos lenguajes de programación.

Si el primer argumento de la función AND evalúa y el 
resultado es falso, el valor total debe ser falso.

Si el primer argumento de la función OR evalúa y el 
resultado es verdadero, el valor total tiene que ser verdadero.

    x and y 
    if x then y else false
    
    x or y
    if x then true else y
    int numerador = 5, denominador = 0;
    if (denominador && numerador/denominador) {
         ………..
    }
    
    
    if (true || false ) {
         ………..
    }
    if (a > b) {
     c = a + b;
    }else {
     c = a * b;
    }

IF

forma a<b se traduce en:

    if a < b goto B.true
    goto B.false

IF

 if ( x < 100 || x > 200 && x != y ) x = 0;

se escribe como:

    if x<100 goto L2
    goto L3
    L3: if x>200 goto L4
    goto L1
    L4: if x!=y  goto L2
    goto L1
    L2: x=0
    L1:

IF

Evitar gotos redundantes

la comparación x> 200 se traduce en el siguiente fragmento de código:

    if x>200 goto L4
    goto L1

L4 ...

se puede expresar como:

    ifFalse x>200 goto L1

L4 ...

IF

Aplicando la técnica al código anterior:

se puede expresar como:

      if x<100 goto L2
      ifFalse x>200 goto L1
      ifFalse x!=y  goto L1
    L2: x=0
    L1:
    if x<100 goto L2
    goto L3
    L3: if x>200 goto L4
    goto L1
    L4: if x!=y  goto L2
    goto L1
    L2: x=0
    L1:

IF-ELSE

se puede expresar como:

    if a < b goto B.true
    goto B.false

WHILE

se puede expresar como:

inicio: if a < b goto B.true
        goto B.false
B.true: instruccion 
        goto inicio 
Made with Slides.com