Усовершенствование языка и компилятора

Содержание

Слайд 2

Цели и задачи

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

Цели и задачи Необходимо было создать удобную среду разработки программ, модифицировав уже
лексического и синтаксического анализа использовались утилиты Bison и Lex.

программа

Компилятор

планирование

Исполнительная система

Lex+yacc

Слайд 3

Старый и новый синтаксис

Для описания реальных задач требуется описывать множества фрагментов данных и

Старый и новый синтаксис Для описания реальных задач требуется описывать множества фрагментов
вычислений

df x(100);
df y_1(100);
df y_2(100);
df y_3(100);
df y_4(100);
cf a = func(out: x);
cf b_1 = norm(in x;out:y_1);
cf b_2 = norm(in x;out:y_2);
cf b_3 = norm(in x;out:y_3);
cf b_4 = norm(in x;out:y_4);
b_1 < a;
b_2 < a;
b_3 < a;
b_4 < a;

const N = 10*10;
const M = 2;
df x(N);
ar[M] df y(N);
cf a = func(out:x);
cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 4

Были добавлены:

Константы
Разбор выражений из констант и итераторов
Массивы
Циклические описания фрагментов вычислений
Циклическое задание порядка

Были добавлены: Константы Разбор выражений из констант и итераторов Массивы Циклические описания
исполнения фрагментов вычислений

Слайд 5

Константы

const N = 100;

const N = 10*10;
const M = 2;
df x(N);
ar[M] df

Константы const N = 100; const N = 10*10; const M =
y(N);
cf a = func(out:x);
cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 6

Разбор выражений из констант и итераторов

const N = 10*10;
const M = 2;
df

Разбор выражений из констант и итераторов const N = 10*10; const M
x(N);
ar[M] df y(N);
cf a = func(out:x);
cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 7

Массивы

const N = 10*10;
const M = 4;
df x(N);
ar[M] df y(N);
cf a =

Массивы const N = 10*10; const M = 4; df x(N); ar[M]
func(out:x);
cf b = for(i=1..M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 8

Циклические описания фрагментов вычислений

const N = 10*10;
const M = 4;
df x(N);
ar[M] df

Циклические описания фрагментов вычислений const N = 10*10; const M = 4;
y(N);
cf a = func(out:x);
cf b = for(i=1..M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 9

Циклическое задание порядка исполнения фрагментов вычислений

const N = 10*10;
const M = 4;
df

Циклическое задание порядка исполнения фрагментов вычислений const N = 10*10; const M
x(N);
ar[M] df y(N);
cf a = func(out:x);
cf b = for(i=1..M;)norm(in:x; out:y[i-1]);
b[i-1] < a (i=1..4;);

Слайд 10

Способ реализации I (неэффективный)

Был добавлен препроцессор который разворачивал циклы. Довольно неплохой способ за

Способ реализации I (неэффективный) Был добавлен препроцессор который разворачивал циклы. Довольно неплохой
исключением того, что генерировался огромный объем кода.

Программа
с циклами

препроцессор

Программа
без циклов

Слайд 11

Способ реализации II (эффективный)

Были изменены функции препроцессора – теперь он стал только подставлять

Способ реализации II (эффективный) Были изменены функции препроцессора – теперь он стал
константы и упрощать по возможности выражения. Циклы передаются в систему в свернутом виде.

Программа
с константами

препроцессор

Программа
без констант

Имя файла: Усовершенствование-языка-и-компилятора.pptx
Количество просмотров: 142
Количество скачиваний: 0