Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа

.docx
Скачиваний:
14
Добавлен:
12.03.2015
Размер:
11.75 Кб
Скачать

Лабораторная работа №3 Харисова Р.Р.

char *tabsl[6]= { "" ,"if", "int", "return", "while", "do" };

enum tipleks tipsl[6]={ ident,ifsl,intsl,retsl,whilesl,dosl };

long int st2[27]=

{1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,

32768,65536,131072,262144,524288,1048576,2097152,4194304,

8388608,16777216,33554432,67108864};

else if (leksema==dosl) /*DO - оператор цикла */

{ tipop=5;

chleks();

nmet=++kmet; nmet1=++kmet;

sprintf(top,"CC_%d:",nmet); gen_kom(top,"","");

operator(mlvoz);

chleks();

if(leksema == whilesl)

{ chleks();

sprintf(top,"CC_%d:",nmet1); gen_kom(top,"","");

if (leksema==lskob)

{ virag(st2[pskob]|noper|mlvoz); /* выpажение-условие */

gen_kom("","POP","AX");

gen_kom("","TEST","AX,AX");

sprintf(top,"CC_%d",nmet); gen_kom("","JNZ",top);

sprintf(top,"CC_%d",++kmet1); gen_kom("","JMP",top);

sprintf(top,"CC_%d:",kmet); gen_kom(top,"","");

}

else oshibka(5); /* тpебуется ( */

} }