Saltar a contenido

Los condicionales permiten un flujo de ejecución condicional, si se cumple una condición se ejecuta cierto número de instrucciones y no se cumple se ejecutan otras

Para los condicionales necesitamos booleanos porque necesitamos evaluar si una condición es verdadera false.

  • Valores expresados: Números y booleanos
  • Valores denotados: Números y booleanos
<expression> ::= "if" <expresion> "then" <expresion> "else" <expresion>

Modificación a la gramática

    (expression ("if" expression "then" expression "else" expression) if-exp)

Se agrega a la expresión if-exp a la gramática para poder declararlo

if >(x,3) then 4 else 5

Modificación a eval-expression

      (if-exp (cond-exp true-exp false-exp)
               (let
                   (
                    (cond-value (eval-expression cond-exp env))
                    )
                 (if (boolean? cond-value)
                     (if
                      cond-value
                      (eval-expression true-exp env)
                      (eval-expression false-exp env)
                      )
                     (eopl:error "The condition must be a boolean " cond-exp)
                     )
                 )
               )
      (else "Not implemeted yet"))))