ВУЗ:
Составители:
26
while l<>0 do
begin
decid(l, t);
outst(l)
end
end;
Правило и процедура D с учетом семантических проверок принимают
вид:
D → <inst(0)> I <instl> {, I <instl> } : ( int <deс(‘int’)> | bool <dec(‘bool’)> )
procedure D;
begin
inst(0);
I;
instl;
while EQ(‘,’) do
begin
gl; I; instl
end;
if EQ(‘:’) then gl else ERR;
if EQ(‘int’) then
begin
gl; dec(‘int’)
end
else
if EQ(‘bool’)
then
begin
gl; dec(‘bool’)
end
else ERR
end;
Анализ выражений
Задача анализа выражений - проверить описаны ли переменные, встре-
чающиеся в выражениях, и соответствуют ли типы операндов друг другу и типу
операции.
Эти задачи решаются следующим образом. Вводится таблица двуместных
операций (таблица 2.2) и стек, в который в соответствии с разбором выражения
E заносятся типы операндов и знак операции. После семантической проверки в
стеке оставляется только тип результата операции. В результате разбора всего
выражения в стеке остается тип этого выражения.
Для реализации анализа выражений введем следующие обозначения про-
цедур и функций:
while l<>0 do begin decid(l, t); outst(l) end end; Правило и процедура D с учетом семантических проверок принимают вид: D →I {, I } : ( int | bool ) procedure D; begin inst(0); I; instl; while EQ(‘,’) do begin gl; I; instl end; if EQ(‘:’) then gl else ERR; if EQ(‘int’) then begin gl; dec(‘int’) end else if EQ(‘bool’) then begin gl; dec(‘bool’) end else ERR end; Анализ выражений Задача анализа выражений - проверить описаны ли переменные, встре- чающиеся в выражениях, и соответствуют ли типы операндов друг другу и типу операции. Эти задачи решаются следующим образом. Вводится таблица двуместных операций (таблица 2.2) и стек, в который в соответствии с разбором выражения E заносятся типы операндов и знак операции. После семантической проверки в стеке оставляется только тип результата операции. В результате разбора всего выражения в стеке остается тип этого выражения. Для реализации анализа выражений введем следующие обозначения про- цедур и функций: 26
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »