Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники / KONSPEKT_СРС_OSA.doc
Скачиваний:
31
Добавлен:
12.05.2015
Размер:
715.26 Кб
Скачать

Управление проектированием

Widget– законченные функциональные элементы, из которых монтируется пользовательский интерфейс.

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

  1. Имя инструмента

  2. Версия инструмента

  3. Физическое расположение инструмента

  4. Пиктограмма инструмента

  5. Синтаксис аргумента командной строки

  6. Информация о том, где располагаются файлы подсказки

  7. Требования к аппаратным и программным ресурсам

  8. Требования к устройствам ввода/вывода данных

  9. Ограничение целостности данных

Менеджер инструментов реализует функции:

  1. Обеспечение сбалансированной загрузки инструментов САПР

Z1 – задача проектирования

Одновременно Т4получает данные от Т2и от Т3инструментов

  1. Доступ к инструменту по имени

  2. Обеспечение непротиворечивости реализации.

При работе инструмента Т4обеспечивается получение перед его работой исходных данных от Т2и Т3.

  1. Протоколирование выполнения (информация о том, какие изменения были

внесены, когда, кем)

  1. Информирование о статусе инструмента в конкретный момент времени

  2. Функция подтверждения лицензирования (сообщение о том, закончилась лицензия или нет)

  3. Компиляция исходных данных (иногда выделяют эту функцию)

Информационный интерфейс

Концептуальная модель данных определяет физическую структуру данных в базе данных.

Образование уровней представления данных

Иерархическое описание элементов электроники в базе данных:

­­­­­­­­­­­­­­­­­­­­­­­­­

­­­­­­­­­­­­­­­­­­­­­­­­

Q

Каждый вентель (NAND1,NAND2) имеет электрическую схему:

Мы можем сократить схему, убрав идентичные повторяющиеся элементы:

Но эта модель представления хуже, т. к. мы не можем видеть все нюансы схемы.

Очень важным элементом платформ является язык.

Области применения языков:

1). Все топологии описываются неалгоритмическими языками;

2). Ввод исходных данных.

Самым удобным способом ввода данных для инженера конечно же является графический. Из графического представления автоматически формируется текстовое, а затем строится математическая модель. При таком способе задания входных данных в процессе компиляции синтаксических ошибок возникать уже не будет, будут только семантические.

3). Также необходим такой язык, который позволяет описывать объект проектирования на нескольких уровнях проектирования.

Процесс компиляции с языка на язык

Пример:

Процедурный язык может быть представлен двумя способами:

  • набор элементов;

  • набор цепей;

Набор элементов:

Г1 - Генератор (10, 20);

Г2 - Генератор (20, 20);

Э1 - Элемент И (2, 1);

Э2 - Элемент ИЛИ (1, 1);

Э3 - Элемент ИЛИ (1, 1);

Набор цепей:

1: вых (Г1), вх (Э1, 1);

2: вых (Г2), вх (Э1, 2);

3: вых (Э1), вх (Э2, Э3);

Задача сканерасостоит в сканировании, а потом выделении лексем (обозначение элементов, скобки, знаки препинания, параметры и т.д.). Сканер формирует таблицу лексем.

Таблица лексем- это табличное представление входного языка, где каждая лексема заменяется ее числовым кодом.

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

Математической моделью графа будет таблица смежности этого графа.

Подготовка к генерации команд заключается в представлении алгоритма предложений, описывающих схему, в виде польской записи. Генерация команд заключается в построении матриц или представлений текста на машинном языке.

Проектирование сканера или лексического анализатора

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

Лексема

К лексемам относятся:

  • идентификаторы ( в том числе служебные слова);

  • целые числа (в том числе вещественные числа в виде <число>.<число>);

  • однолитерные разделители (+, -, (, ), / и т.д.);

  • двухлитерные разделители ( //, /*, */ и т.д.);

<идентификатор> :: = <буква>| <идентификатор><буква>| <идентификатор><цифра>

< целое >:: =< цифра > | < целое > < цифра >

<разделитель> :: = + | - | ( | ) | / ...

<двулитерный разделитель> :: = <slash> / | <slash> * | ...

<slash> :: = /

<AST> :: = *

<colon> :: = :

Пример регулярной грамматики:

G[z] - грамматикаGотz.

Z- начальный символ грамматики.

Z:: =U0 |V1;

U:: =Z1 | 1;

V:: =Z0 | 0;

Можно сделать вывод, что алфавит языка состоит из 0 и 1.

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

Представим их в графическом виде:

S :: = U 1

Где S - терминальный символ.

Тогда диаграмма состояний нашей грамматики будет иметь такой вид:

0

S

U

V

Z

Er

Пусть Х = 101001

Составим алгоритм грамматического разбора начальной цепочки S.

Текущее состояние

Остаток цепочки Х

S

101001

U

01001

Z

1001

U

001

Z

01

V

1

Z

-

Реализован алгоритм восходящего синтаксического анализа: из терминального символа мы пришли к начальному символу грамматики.

Описание алгоритма словесно:

1). При разборе предложений языка первым текущим состоянием алгоритма считать состояние S. Сканирование выполняется каждой первой литеры цепочки Х. После сканирования литера из цепочки удаляется.

2). Перейти по дуге отмеченной сканированной литерой в следующее состояние алгоритма.

3). Сканировать очередную литеру, если она есть в цепочке Х и перейти к шагу 2 алгоритма.

Цепочка считается правильной, если все символы в цепочке исчерпываются и при этом мы достигаем начального символа грамматики.

Z::=U0/V1

U::=Z1/1

V::=Z0/0

M(R,t)=Q – множество отображений

Q::=Rt – множество порождающих правил

КА({S,Z,U,V,Er},{0,1} {Mi}, S, Z)

M(S,0)=V

M(V,0)=Er

Автомат может быть и недетерминированным. Это возникает в случае:

V::=Ut

W::=Ut

Пример:

Z::=U1/V0/Z0/Z1

U::=Q1/1

V::=Q0/0

Q::=Q0/Q1/0/1

Описание этого недетерминированного конечного автомата:

НКА=({S,Q,U,U2},{0,1}, M, S, Z)

M(S,Q)={V,Q}

M(S,1)={U,Q}

M(V,0)={Z}

M(V,1)=

M(Q,0)={V,Q}

M(Q,1)={U,Q}

Можно случайно выбирать один из двух переходов (каждый из них будет правильным), но не каждый из переходов приведет к положительному результату.

Пример:

Текущее состояние

Цепочка

Возможное состояние

Выбор

S

01001

V , Q

Q

Q

1001

Q , U

Q

Q

001

Q , V

V

V

01

Z

Z

Z

1

Z

Z

Мы дошли до конечного состояния Z. Цепочка правильная, следовательно, распознавание успешно закончилось.

Бывают случаи, что цепочка закончилась, а мы еще не дошли до конечного состояния Z.

Недетерминированность лучше исключать на формальном уровне, но не на графе.

Грамматика всегда должна быть детерминированной.

Примеры для закрепления:

  1. Построить автомат для грамматики:

Z::=A0

A::=A0/Z1/0

  1. 10101

Z::=A0

A::=Z1/1

10

Z10

A010

1010

Соседние файлы в папке Заочники