- •Міністерство освіти і науки україни
- •Основи системного аналізу
- •Задача поиска технических решений
- •Базовые термины и определения
- •Формализация описания процесса функционирования сложной технической системы
- •Обеспечение целостности и описание сложной технической системы (стс)
- •Форма представления стс
- •Эффективность стс определяется по схеме:
- •Типовой процесс решения системотехнической задачи
- •Среда или платформа автоматизированного проектирования
- •Управление проектированием
- •Информационный интерфейс
- •Образование уровней представления данных
- •Программирование сканера
- •Диаграмма состояний
- •Разработка семантических программ компилятора
- •Инструменты электронных платформ сапр
- •Инструменты системного проектирования системы сапр
- •Инструменты проектирования цифровых электронных схем.
- •Задачи сапр цифровых схем
- •Математическая модель цифровой схемы
- •Машинная модель
- •Событийный метод
- •Механизм динамических списков событий
- •Графические инструменты схемы
- •Стандарт iges разрабатывался в 50-60 гг, когда основным средством ввода была перфокарта, отсюда его и недостатки.
- •Средства черчения
- •Программный интерфейс платформы сапр
- •Порождаемые процессы (порожденные)
- •Типы атрибутов объекта
- •Описание атрибутов
- •Правила атрибутов
- •Связи между объектами
- •Описание динамического поведения объекта
- •Системы автоматизированного проектирования как открытые системы
- •Свойства открытых систем
- •Компоненты открытых систем
- •Обеспечение переносимости и масштабируемости
Программирование сканера
Определяем алфавит.
Включаем символы: /, +, -, *, (, ), //
Служебные слова: Begin,Abs,End
Определяем базовые лексемы:
<идентификатор>::=<буква>{<буква>/<цифра>}7
<число>::=<цифры>{<цифры>}
Комментарии
/* … */
В результате работы сканера мы должны построить таблицу лексем, следовательно, необходимо ввести кодировку лексем.
Кодировка лексем
Внутреннее представление |
Символ |
Мнемоническое имя |
0 |
Не определен |
$UND |
1 |
Идентификатор |
$ID |
2 |
Целое |
$INT |
3 |
Begin |
$BEGIN |
4 |
ABS |
$ABS |
5 |
End |
$END |
6 |
/ |
$SLASH |
7 |
+ |
$PLUS |
8 |
- |
$MINUS |
9 |
* |
$STAR |
10 |
( |
$LPAR |
11 |
) |
$APAR |
12 |
// |
$SLSL |
Исходный текст:
Begin A+/BC///*Comment++*/End11
Получаем:
3, |
‘Begin’ |
1, |
‘A’ |
7, |
‘+’ |
6, |
‘/’ |
1, |
‘BC’ |
12, |
‘//’ |
5, |
‘End’ |
2, |
‘11’ |
Программа, формирующая таблицу лексем:
Var Ch:Char; /* Сканируемая литера, будем считать коды: D=1, L=2, /=3, Delim=4 */
Class:Integer;/* Тип литеры */
A:String; /* Cтрока сканируемых символов */
GetChar; /* Читает из строки символов текущий символ и определяет его тип */
/* (буква, цифра, косая или однолитерный разделитель) */
GetNonBlank /* Проверяет Ch, и если Ch – это пробел, то снова вызывает */
/* процедуру GetChar */
Begin
GetNonBlank; /* Прогоняем все предшествующие пробелы до значимого символа */
A:=’ ‘;
Case Class of
1: Begin
While Class=1 do
Begin
A:=A+Ch;
GetChar;
End;
Syn:=$INT;
End;
2: Begin
While Class<=2 do
Begin
A:=A+Ch;
GetChar;
End;
Syn:=$ID;
Look U(A); /* относится ли этот идентификатор к резервируемым словам */
End;
3:Begin
A:=Ch;
GetChar;
If Ch=’*’ then
Begin
GetChar;
Repeat While Ch<>’*’ do
GetChar;
Until Ch=’/’;
GetChar;
End;
Else
If Ch=’/’ then
Begin
A:=A+Ch;
GetChar;
Syn:=$SLSL;
End;
End.
Теперь наступает очередь построения программы синтаксического анализа. Если лексемы описываются регулярной грамматикой и распознаются этим распознавателем, то это контекстно-свободная грамматика. Способ описания этой грамматики – синтаксический граф.
Например, есть грамматика:
A::=x/(B)
B::=AC
C::={+A}
x, (), + - терминальные символы языка
А, В, С – нетерминальные термины языка (состояния)