Language "IMP" #2 Boolean expressions Syntax BExp : bexp ::= 'false' | 'true' | aexp '<=' aexp | '!' bexp | bexp '&&' bexp | '(' bexp ')' Semantics eval-bool[[ _:bexp ]] : =>booleans
Rule
eval-bool[[ 'false' ]] = false Rule eval-bool[[ 'true' ]] = true Rule eval-bool[[ AExp1 '<=' AExp2 ]] = is-less-or-equal(eval-arith[[ AExp1 ]], eval-arith[[ AExp2 ]]) Rule eval-bool[[ '!' BExp ]] = not(eval-bool[[ BExp ]]) Rule eval-bool[[ BExp1 '&&' BExp2 ]] = if-true-else(eval-bool[[ BExp1 ]], eval-bool[[ BExp2 ]], false) Rule eval-bool[[ '(' BExp ')' ]] = eval-bool[[ BExp ]]