Конспект лекций доцента и. А. Волковой по курсу «системы программирования»




НазваниеКонспект лекций доцента и. А. Волковой по курсу «системы программирования»
страница15/20
Дата публикации28.06.2013
Размер0.69 Mb.
ТипКонспект
lit-yaz.ru > Информатика > Конспект
1   ...   12   13   14   15   16   17   18   19   20
^

Внутреннее представление программы



Результатом работы анализатора должна быть некая внутренняя запись программы, отражающая её синтаксическую структуру.
^

Основные свойства языка внутреннего представления программы.



(Внимание! Это вопрос с зачёта!)

  1. Позволяет фиксировать синтаксическую структуру исходной программы.

  2. Текст на нём можно автоматически генерировать во время синтаксического анализа.

  3. Его конструкция должна просто транслировать в объектный код, либо достаточно эффективно интерпретировать.


Вставляем в грамматику действия в определённых местах, чтобы ПОЛИЗ преобразовывался автоматически.
При переходе в ПОЛИЗ необходимо следить, чтобы не изменялся порядок операндов.

(Например, нельзя даже заменять A<=B на B>=A.)
Будем получать ПОЛИЗ автоматически путём подстановки действий в грамматику, а не по алгоритму.
-а - специальное представление унарного минуса


0-а &a

- для унарного минуса здесь надо вводить спец. значок, например &.
++

- -

+=



++ i=i+1

| |

единая или такая

одномерная расшифровка

операция операции
Пример. sin(x) в ПОЛИЗе записывается x, sin.

| -операнд | - операция

название операнд

операции
Пример. I:=E записывается: I, E, :=


^

Лекция 11. 23/04/2004.




Перевод операторов в ПОЛИЗ.



Итак, в запись программы надо включать некоторые дополнительные элементы для перевода оператора в ПОЛИЗ.

Например, I:=E записывается: I, E, :=

Для некоторых переменных нужен адрес, а не значение, будем подчёркивать такие переменные.

Е – некоторое выражение, записанное в ПОЛИЗе.
На зачёте могут встретиться операции из других языков программирования.

++ +=

i=i+1 Полиз: i,i,1,+,:=,

i++ i,++,
Т.о. при использовании этой операции как одноместной, не забывать её (i) подчёркивать.

i+=1 => i,1,+=
Специальные операции ПОЛИЗа:

!, !F - внутренние операции ПОЛИЗа.

! – безусловный переход (GO TO)

p,! p – метка ПОЛИЗа, позиция, на которую надо передать управление, начиная откуда выполняется оператор.

B,p,!F !F – переход при невыполнении условия, B – условие, логическое выражение.

Эти операции будут считываться наравне с привычными.
Запишем в ПОЛИЗе операторы модельного языка:

  • Условный оператор.

if E then S1 else S2

if (!E) goto L2; S1; goto L3; L2:S2; L3:……

E, p2, !F, S1, p3, !, S2

Вместо р потом подставляем позицию в ПОЛИЗе.

S1 – некий оператор.

  • while E do S

L0: if (!E) goto L1; S; goto L0; L1:……

E, p1, !F, S, p0, !, …

  • read (I) => I, read, …

write (E) => E, write, …
Перевод цепочек с одного языка в другой происходит в синтаксическом анализе, цепочки другого языка вставляются в исходный язык предварительно.

Будем пользоваться синтаксически управляемым переводом. Действия вставляем предварительно.
Пример. Даны 2 языка:

L1 = {0n1m | n>=0, m>0}

L2 = {ambn | n>=0, m>0}

Синтаксически управляемый перевод: написать грамматику, вставляя действия из одного языка в другой.

L1: S -> 0S | 1A

A -> 1A | ε

Грамматика L1 должна быть такой, чтобы к ней был применим МРС.

S -> 0S | 1 A

A -> 1 A | ε

Символов b столько же, сколько нулей в исходной L1.
^ Пример. №82.

Пусть задан язык.

L1 = {w & | w принадлежит {a,b}+, Σa = n, Σb = m}

L2 = {a[n/2]b[m/2] | n>=0, m>=0}

S -> aA & | bA &

A -> aA | bA | ε
S -> a A&

//для введения счётчиков и присвоения им начального значения

A -> a < if(n) {cout<<‘a’; n=0; }

else n=1; > A |

bA |

ε

//для выделения целой части

А отделяет: сначала вывод ‘a’, потом вывод ‘b’.
Подведём некоторые итоги:

  1. :=, F, !F, read, write – новые операции

  2. в ПОЛИЗе храним лексемы.


Понятие лексем надо расширить – ввести ‘p’ – метки ПОЛИЗа.

Тип (0,р) – лексемы метки.

Тип (5,А) – адрес лексемы.
class poliz {

lex *p;

int size;

int free;

public:

poliz (int max_size)

{p=new lex[size=max.size]; free=0;}

~poliz( ) {delete[ ]p;}

void put_lex (lex e) {p[free++] = l;}

void put_lex (lex e, int place) {p[place] = e;}

void blank( ) {free++;}

int get_free( ) {return free;}

lex &operator[ ] (int index)

{if (index>size) throw “POLIZ: out of array”;

else if (index>free) throw “POLIZ: element out of array”;

else return p[index];

};

void print ( ) {

for (int i=0; i
}

};
В конце каждой альтернативы вставить функцию putlex, и текущую лексему вставить в ПОЛИЗ.
poliz prog (1000);
S -> I
>:= - 5-класс адресов

Адрес – номер строки в таблице идентификаторов.

E

//-заносится в ПОЛИЗ
S -> if E
prog.put_lex(lex(1,TW.look(“!F”)));>

then S1

prog.put_lex(lex(1,TW.look(“!”)));

prog.put_lex(lex(0,prog.get_free( )), pl2);

//формируем лексему и заносим в адрес pl2 сформированные ранее

else S2

S -> while
E
prog.put_lex (lex (1,TW.look(“!F”)));>

do S

prog.put_lex (lex (0,prog.get_free( )), p(1);>
S -> read (I )

S -> write(E)

В результате выполнения программы-анализатора по МРС будет записан массив

poliz prog (1000);
Встречающийся операнд заносим в стек. Операция – сдвиг нужного количества операндов, соответствующих операции, и выполнение операции.

При выполнении вспомогательной операции (например, условной) ничего записывать в стек не надо.

По окончании операции в стеке останется 1 значение, и будут выполнены действия.
class executer {

lex curr_lex;

public:

void execute( );

};
Внутри функции вводится шаблонный класс stack.

1   ...   12   13   14   15   16   17   18   19   20

Похожие:

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconКонспект лекций по курсу «Объектно-ориентированное программирование»
Б. Страуструп. Язык программирования C++, 3-е изд./Пер с англ. – Спб.; М.: «Невский диалект» – «Издательство бином», 1999 г. – 991...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconКонспект лекций «Логистика. Конспект лекций»
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconВ. Г. Баула Введение в архитектуру ЭВМ и системы программирования
Мгу им. М. В. Ломоносова. По данному курсу существует достаточно обширная литература, посвящённая программированию на Ассемблере,...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconРабочая программа по курсу «основы программирования на с++»
Программа предназначена для обучения программирования на языке С++ учреждений начального профессионального образования для овладения...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconМетодические указания к курсовой работе по дисциплине " системы программирования " Киев -2002
Целью курсовой работы по дисциплине "Системы программирования" является закрепление теоретического материала и приобретение практических...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconРабочая программа по курсу «основы Программирования на языке ассемблер»
Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconСистемы сбора информации на железнодорожном транспорте хабаровск
Конспект лекций предназначен для студентов дневной формы обучения специальности 0719 ²Информационные системы на ж д транспорте²,...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconУчебная программа курса или дисциплины «Основы программирования»
В частности, в курсе рассматриваются основные конструкции языков программирования, анализируются основные типы и структуры данных,...

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconКонспект лекций по дисциплине вгипу, 2009 Конспект лекций по дисциплине «Управление персоналом»
Крупица В. В., Яшкова Е. В., Егоров Е. Е. Управление персоналом: Конспект лекций по дисциплине – вгипу, 2009

Конспект лекций доцента и. А. Волковой по курсу «системы программирования» iconКонспект лекций. (Электронный учебник) Минск: бгэу, 2010. Тема 1...
Короленок Г. А. Менеджмент в торговле. Конспект лекций. (Электронный учебник) Минск: бгэу, 2010



Образовательный материал



При копировании материала укажите ссылку © 2013
контакты
lit-yaz.ru
главная страница