Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Контрольные работы » Проектування компілятора

Реферат Проектування компілятора





в SEGTAB, скидання лічильника

strcpy (segtab [seg-1]. name, pole [0]);// розміщення;

} (! strcmp (pole [1], В«endsВ»))// if ENDS, то запис довжини сегм-та

{segtab [seg-1]. len = cnt; (В«add to segtab:% s% d% d n", [seg-1]. name, seg, segtab [seg- 1]. len);;

} ((! strcmp (pole [0], В«assumeВ»)) | | (! strcmp (pole [0], " 0")))

continue;// if порожнє поле-читання сл. рядка = findop (pole [0]); (num)// if код операції - збільшення

{lent = op2code (num, 0, pole, cod);// рахунок. розміщу. на її довжину

if (lent) {printf (В«lenght:% d n", lent); + = lent;

} printf (В«Error: wrong operand! n");;

} ((pole [0] [strlen (pole [0]) - 1] == ':') | | (! strcmp (pole [1], В«dwВ»)))

{if (pole [0] [strlen (pole [0]) - 1] == ':') [0] [strlen (pole [0]) - 1] = ' 0 ';// if мітка (findsym (pole [0]) == -1)// не знайдено в SYMTAB

{strcpy (symtab [psym]. name, pole [0]);// занесення до SYMTAB [psym]. sgm = seg; [psym]. dsp = cnt; (В«add to symtab :% s% d% d n ", [psym]. name, symtab [psym]. sgm, symtab [psym]. dsp); + +;

}// if мітка знайдена - ошібкаprintf (В«Error: label% s retry! nВ», pole [0]); (! strcmp (pole [1 ], " 0")) continue; = findop (pole [1]);

if (num)// if код операції - збільшення

{lent = op2code (num, 1, pole, cod);// рахунок. розміщу. на її довжину

if (lent) {printf (В«lenght:% d n", lent); + = lent;

} printf (В«Error: wrong operand! n");

} printf (В«Error: wrong mnemonic code! n");

}// у всіх ін випадках - помилка

}

//////////////////////////// second passage * ftmp;// тимчасові файлиfname [2] [10] = {{В«temp1.datВ»}, {В«temp2.datВ»}}; (); (); (В» *** second passage *** n "); = 0; + +; = 0; (ft);

while (! feof (ft))// повторювати поки не кінець файлу

{fgets (stk, 80, ft);// читання рядки (В« n"); (); (stk); pol (stk, pole);// розбиття рядка на поля

if (! strcmp (pole [1], В«segmentВ»))// if друге поле SEGMENT

{seg + +;// збільшення номера сегмента = fopen (fname [seg-1], В«w + bВ»);// відкрити соотв. вр. файл = 0;// скидання лічильника розміщення;

} (! strcmp (pole [1], В«endsВ»))// if ENDS-заткрить соотв. вр. файл

{fclose (ftmp);;

} ((! strcmp (pole [0], В«assumeВ»)) | | (! strcmp (pole [0], " 0")))

Назад | сторінка 5 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка алгоритму синтаксичного аналізу оператора виведення printf мови C ...
  • Реферат на тему: Світові рибні промисли. Збільшення світового виробництва продовольства за ...
  • Реферат на тему: Збільшення продажів за рахунок проведення спеціальних заходів щодо стимулюв ...
  • Реферат на тему: Демонстрація можливості збільшення параметрів плазми в ГДЛ за рахунок поліп ...
  • Реферат на тему: Проект збільшення існуючої потужності підприємства ВАТ "Балаковорезіно ...