if (lx != lex) {
printf( "Не совпадает lx = %d и lex = %d в строке nst = %d!\n",
lx, lex, nst );
exit(0);
}
get();
return;
}
void stml() {
stat();
while (lex == ';') {
get();
stat();
}
return;
}
void push( int a ) {
if (t >= 499) {
puts( "Переполнение стека!" );
exit( 0 );
}
st[++t] = a;
return;
}
int red() {
int v, c;
do {
puts( "Введите число:" );
fflush( stdin );
c = getchar();
} while (isspace( c ));
if (!isdigit( c )) {
puts( "Недопустимый символ!" );
exit( 0 );
}
for (v = 0; isdigit( c ); c = getchar())
v = 10*v+c-'0';
ungetc( c, stdin );
return v;
}
void interp() {
int i;
t = -1;
for (i = 0; i < cgv; i++)
push( 0 );
if (cpnm) {
printf( "Введите %d фактических переменных для main:\n", cpnm );
fflush( stdin );
for (i = 0; i < cpnm; i++)
push( red() );
}
push( cpnm );
push( -2 );
push( -1 );
sp = t;
p = adrnm;
do {
comman();
p++;
} while (p >= 0);
if (p == -1)
printf( "%d\n", st[t] );
return;
}
void comman() {
int i;
int a = TCD[p].opd;
switch (TCD[p].cod) {
case OPR: operat( a );
break;
case LIT: push( a );
break;
case LDE: push( st[a] );
break;
case LDI: push( st[sp+a] );
break;
case STE: st[a] = st[t--];
break;
case STI: st[sp+a] = st[t--];
break;
case CAL: push( p );
push( sp );
sp = t;
p = a-1;
break;
case INI: for (i = 0; i < a; i++)
push( 0 );
break;
case JMP: p = a-1;
break;
case JMC: if (st[t--] <= 0)
p = a-1;
break;
}
return;
}
void operat( int a ) {
int j = t-1;
switch (a) {
case 1: printf( "1>" );
fflush( stdin );
push( red() );
break;
case 2: printf( "%d\n", st[t--]);
break;
case 3: st[j] += st[t--];
break;
case 4: st[j] -= st[t--];
break;
case 5: st[j] *= st[t--];
break;
case 6: if (st[t] == 0) {
puts( "Деление на 0!" );
exit( 0 );
}
st[j] /= st[t--];
break;
case 7: if (st[t] == 0) {
puts( "Деление на 0!" );
exit( 0 );
}
st[j] %= st[t--];
break;
case 8: st[t] = -st[t];
break;
case 9: j = st[sp-2];
st[sp-j-2] = st[t];
t = sp-j-2;
p = st[sp-1];
sp = st[sp];
break;
case 10: p = -3;
break;
case 11: st[t] = st[t]*st[t]; //собственная команда возведения в квадрат
break;
}
return;
}
1) [Авраменко, 2003] Авраменко Виктор Васильевич: Системное программирование / Конспект лекций. СумГУ, 2003.
2) [Проценко, 1993] Проценко В.С., Чаленко П.Й., Ставровський А.Б. Техніка програмування мовою Сі. «Либідь», Київ. 1993.
3) [Stroustrup, 2001] Bjarne Stroustrup. The C++ Programming Language / Special edition. AT&T Labs, Florham Park, New Jersey. 2001.
4) [Немнюгин, 2000] С.А. Немнюгин. TURBO PASCAL. Санкт-Петербург, Москва, Харьков, Минск. 2000.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.