- •Задание
- •Описание языка
- •Описания и типы
- •Способы описания собственных типов:
- •Описание констант:
- •Описание переменных:
- •Имена и выражения Выражения:
- •Переменные:
- •Операторы
- •Оператор присваивания
- •Структуры данных
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
- •Описание промежуточного языка
- •Описание перевода (таг) каждой конструкции входного языка Основная грамматика:
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
Структуры данных
Каждая лексема имеет следующий вид:
тип лексической единицы |
адрес |
Для ключевых слов: тип - номер в таблице ключевых слов, адрес - нулевой.
Для остальных элементов: тип - номер таблицы, адрес - номер в таблице.
Синтаксический анализ и перевод во внутреннюю форму
КС-грамматика входного языка
Смотрите подграмматики. Символы, состоящие из прописных букв, являются нетерминалами, остальные символы - терминалами.
КС-грамматика входного языка является 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