Реферат: Структура и реализация макроязыков

2. ВЫХ2 - Вы­ход­ная ко­пия тек­ста по­сле­ второ­го про­хо­да

3. МДТ - таб­ли­ца мак­ро­оп­ре­де­ле­ний, в ко­то­рой хра­нят­ся те­ла мак­ро­оп­ре­де­ле­ний

4. МНТ - таблица имен, не­об­хо­ди­мая для хра­не­ния имен мак­ро­ко­манд, оп­ре­де­лен­ных в МНТ

5. МДТС - счет­чик для таб­ли­цы МДТ

6. МНТС - счет­чик для таб­ли­цы МНТ

7. АЛА - мас­сив спи­ска па­ра­мет­ров для под­ста­нов­ки ин­декс­ных мар­ке­ров вме­сто фор­маль­ных па­ра­мет­ров, пе­ред за­по­ми­на­ни­ем оп­ре­де­ле­ния.


АЛГОРИТМ

Ни­же при­ве­де­на фор­маль­ная за­пись со­от­вет­ст­вую­щих ал­го­рит­мов об­ра­бот­ки мак­ро­оп­ре­де­ле­ний двух­про­смот­ро­вым спо­со­бом.

Ка­ж­дый из ал­го­рит­мов осу­ще­ст­в­ля­ет по­строч­ный про­смотр вход­но­го тек­ста.

ПЕР­ВЫЙ ПРО­СМОТР - МАК­РО­ОП­РЕ­ДЕ­ЛЕ­НИЯ: Ал­го­ритм пер­во­го про­смот­ра про­ве­ря­ет ка­ж­дую стро­ку вход­но­го тек­ста. Ес­ли она пред­став­ля­ет со­бой псев­до­опе­ра­цию MACRO, то все сле­дую­щие за ней стро­ки за­по­ми­на­ют­ся в бли­жай­ших сво­бод­ных ячей­ках МДТ. Пер­вая стро­ка мак­ро­оп­ре­де­ле­ния - это имя са­мо­го мак­ро­са. Имя за­но­сит­ся в таблицу имен МНТ с ин­дек­сом этой стро­ки в МДТ. При этом про­ис­хо­дит так­же под­ста­нов­ка но­ме­ров фор­маль­ных па­ра­мет­ров, вме­сто их имен. Ес­ли в те­че­ние про­смот­ра встре­ча­ет­ся ко­ман­да END, то это оз­на­ча­ет, что весь текст об­ра­бо­тан, и управ­ле­ние мож­но пе­ре­да­вать вто­ро­му про­смот­ру для об­ра­бот­ки мак­ро­ко­манд.

ВТО­РОЙ ПРО­СМОТР - РАС­ШИ­РЕ­НИЕ МАК­РО­КО­МАНД: Ал­го­ритм вто­ро­го про­смот­ра про­ве­ря­ет мне­мо­ни­че­ский код ка­ж­до­го пред­ло­же­ния. Ес­ли это имя со­дер­жит­ся в МНТ, то про­ис­хо­дит об­ра­бот­ка мак­ро­пред­ло­же­ния по сле­дую­ще­му пра­ви­лу: из таб­ли­цы МНТ бе­рет­ся ука­за­тель на на­ча­ло опи­са­ния мак­ро­са в МДТ. Макропроцессор го­то­вит мас­сив спи­ска АЛА со­дер­жа­щий таб­ли­цу ин­дек­сов фор­маль­ных па­ра­мет­ров и со­от­вет­ст­вую­щих опе­ран­дов мак­ро­ко­ман­ды. Чте­ние про­из­во­дит­ся из МДТ, по­сле че­го в про­чи­тан­ную стро­ку под­став­ля­ют­ся не­об­хо­ди­мые па­ра­мет­ры, и по­лу­чен­ная та­ким об­ра­зом стро­ка за­пи­сы­ва­ет­ся в ВЫХТ2. Ко­гда встре­ча­ет­ся ди­рек­ти­ва END, текст по­лу­чен­но­го ко­да пе­ре­да­ет­ся для ком­пи­ля­ции ас­семб­ле­ру.


Пер­вый про­смотр

На­ча­ло ал­го­рит­ма

МДТС = 0

МНТС = 0

ФЛАГ ВЫХОДА = 0

цикл по­ка (ФЛАГ ВЫХОДА == 0) {

чтение следующей строки ВХТ

если !(операция MACRO) {

вывод строки в ВЫХТ1

если (операция END) ФЛАГ ВЫХОДА = 1

}

иначе {

чтение идентификатора

запись имени и индекса в МНТ

МНТС ++

приготовить массив списка АЛА

запись имени в МДТ

МДТС ++

К-во Просмотров: 493
Бесплатно скачать Реферат: Структура и реализация макроязыков