Условие задачи
Заданную КС-грамматику приведите к грамматике Вирта (простого предшествования). Для этого устраните факультативные [ ] и итеративные { } скобки путем добавления новых альтернатив и праворекурсивных правил. Постройте матрицу простого предшествования. Проведите свертку указанной правильной цепочки с использованием построенных Вами отношений предшествования.
S :: = CALL <идентификатор>(<список фактических параметров>)
<список фактических параметров> :: = <параметр>{,< параметр >}
<параметр> :: = < идентификатор> | <константа >
<идентификатор> - обозначаем @; <константа> - обозначаем k;
Цепочка для свертки: CALL PRIMER1 ( ABC, 27, 15 )
Ответ
Переобозначим нетерминалы для сокращения записи и избавимся от факультативных и итеративных скобок:
S- CALL @ ( L )
L- P | P, L
P- @ | k
Новая грамматика не является грамматикой простого предшествования, т.к. между символами L и ) двойственные отношения:
L = ) и L ) так как R(L) DO , a L является R(L) из-за наличия в грамматике правила L- P, L
Введя новый нетерминал L1 и правило для него L1-...