- •Задание
- •Описание языка
- •Описания и типы
- •Способы описания собственных типов:
- •Описание констант:
- •Описание переменных:
- •Имена и выражения Выражения:
- •Оператор присваивания
- •Переменные:
- •Операторы
- •Структуры данных
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
- •Описание промежуточного языка
- •Описание перевода (таг) каждой конструкции входного языка Основная грамматика:
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
Структуры данных
Каждая лексема имеет следующий вид:
|
тип лексической единицы |
адрес |
Для ключевых слов: тип - номер в таблице ключевых слов, адрес - нулевой.
Для остальных элементов: тип - номер таблицы, адрес - номер в таблице.
Синтаксический анализ и перевод во внутреннюю форму
КС-грамматика входного языка
Смотрите подграмматики. Символы, состоящие из прописных букв, являются нетерминалами, остальные символы - терминалами.
КС-грамматика входного языка является LL(1)-грамматикой.
Разбиение грамматики на подграмматики
Основная грамматика:
Нетерминалы:
|
PRG |
программа |
|
RL |
раздел меток |
|
RC |
раздел констант |
|
RT |
раздел типов |
|
RV |
раздел переменных |
|
RO |
раздел операторов |
|
OM |
определение метки |
|
OM` |
остаток определения метки |
|
OC |
определение константы |
|
OC` |
остаток определения константы |
|
IC |
имя константы |
|
CNS |
константа |
|
CNSN |
константа без знака |
|
OT |
определение типа |
|
OT` |
остаток определения типа |
|
IT |
имя типа |
|
TYP |
тип |
|
OV |
определение переменной |
|
OV` |
остаток определения переменной |
|
LI |
список имен |
|
OPS |
составной оператор |
PRG ® RL RC RT RV RO .
RL ® lab OM ; OM`
RL ® e
OM` ® OM ; OM`
OM` ® e
OM ® lbl
RC ® con OC ; OC`
RC ® e
OC` ® OC ; OC`
OC` ® e
OC ® IC = CNS
CNS ® + CNSNS
CNS ® - CNSNS
CNS ® CNSNS
CNSNS ® num
CNSNS ® IC
IC ® id
RT ® typ OT ; OT`
RT ® e
OT` ® OT ; OT`
OT` ® e
OT ® IT = TYP
IT ® id
RV ® var OV ; OV`
RV ® e
OV` ® OV ; OV`
OV` ® e
OV ® LI : TYP
RO ® beg OPS end
Подграмматика для выражения:
Нетерминалы:
|
E |
выражение |
|
E` |
остаток выражения |
|
EAR |
арифметическое выражение |
|
T |
терм |
|
T` |
остаток терма |
|
P |
произведение |
|
P` |
остаток произведения |
|
F |
фактор |
|
VAR |
переменная |
E ® EAR E`
E` ® = EAR E`
E` ® < EAR E`
E` ® > EAR E`
E` ® e
EAR ® + T
EAR ® - T
EAR ® T
T ® P T`
T` ® + P T`
T` ® - P T`
T` ® e
P ® F P`
P` ® * F P`
P` ® / F P`
P` ® e
F ® cns
F ® ( EAR )
F ® VAR
Подграмматика для описания типов:
Нетерминалы:
|
TYP |
тип |
|
TSMP |
простой тип |
|
TCMP |
составной тип |
|
TDIA |
диапазонный тип |
|
TDIA` |
остаток диапазонного типа |
|
TOPR |
определенный ранее тип |
|
IT |
имя типа |
|
CNS |
константа |
|
TMAS |
массивный тип |
|
TZAP |
запись |
|
TI |
тип индекса |
|
TI` |
остаток типа индекса |
|
TKOM |
тип компоненты |
|
LP |
список полей |
|
LP` |
остаток списка полей |
|
SEC |
секция записи |
|
LI |
список имен |
|
LI` |
остаток списка имен |
TYP ® TSMP
TYP ® TCMP
TSMP ® int
TSMP ® rea
TSMP ® com
TSMP ® boo
TSMP ® TDIA
TSMP ® TOPR
TDIA ® CNS TDIA`
TDIA` ® .. CNS
TOPR ® IT
IT ® id
TCMP ® TMAS
TCMP ® TZAP
TMAS ® arr [ TI TI` ] of TKOM
TI` ® , TI TI`
TI` ® e
TI ® TSMP
TKOM ® IT
TZAP ® rec LP end
LP ® SEC LP`
LP ® e
LP` ® ; SEC LP`
LP` ® e
SEC ® LI : TYP
LI ® id LI`
LI` ® , id LI`
LI` ® e
