Теория языков программирования и методы трансляции. Копейкин М.В - 23 стр.

UptoLike

IF <условие> THEN оператор
void exec_if()
{ int x,y,cond;
char op;
get_exp(&x);
get_token();
if (!strchr("=<>",*token))
{ serror(0);
return;
}
op=*token;
get_exp(&y);
cond=0;
switch(op)
{ case '=':
if (x==y) cond=1;
break;
case '<':
if (x<y) cond=1;
break;
case '>':
if (x>y) cond=1;
break;
}
if (cond)
{ get_token();
if (tok!=THEN)
{ serror(8);
return;
}
}
else find_eol();
}
Функция exec_if() выполняется следующим образом:
- вычислить значение левого выражения;
- считать операцию сравнения;
- вычислить значение правого выражения;
- выполнить операцию сравнения;