ВУЗ:
Составители:
64
A();
}
if(ch == ')') ch = fgetc(input);
else error();
}
else error();
}
void main(int argc, char **argv)
{
ch =fgetc(input);
A();
}
При этом преобразовании свободно применялись некоторые очевидные
правила программирования, позволяющие упростить программу. Например,
при буквальном переводе четвертая строка имела бы вид:
if(ch == 'x')
if(ch == 'x') ch = fgetc(input); else error();
else ...
Ясно, что ее можно сократить, как это сделано в программе. Операторы
чтения в восьмой и двенадцатой строках тоже получены с помощью такого
же упрощения
.
По-видимому, полезно определить, когда вообще возможны подобные
упрощения, и показать это непосредственно в виде графов. Два основных
случая покрываются следующими дополнительными правилами:
В4а.
S
1
S
2
S
n
. . .
x
1
x
2
x
n
. . .
if(ch == 'x1')
{
ch = fgetc(input);
T(S1);
}
else
if(ch == 'x2')
64 A(); } if(ch == ')') ch = fgetc(input); else error(); } else error(); } void main(int argc, char **argv) { ch =fgetc(input); A(); } При этом преобразовании свободно применялись некоторые очевидные правила программирования, позволяющие упростить программу. Например, при буквальном переводе четвертая строка имела бы вид: if(ch == 'x') if(ch == 'x') ch = fgetc(input); else error(); else ... Ясно, что ее можно сократить, как это сделано в программе. Операторы чтения в восьмой и двенадцатой строках тоже получены с помощью такого же упрощения. По-видимому, полезно определить, когда вообще возможны подобные упрощения, и показать это непосредственно в виде графов. Два основных случая покрываются следующими дополнительными правилами: В4а. x1 S1 x2 S2 ... ... xn Sn if(ch == 'x1') { ch = fgetc(input); T(S1); } else if(ch == 'x2')
Страницы
- « первая
- ‹ предыдущая
- …
- 62
- 63
- 64
- 65
- 66
- …
- следующая ›
- последняя »