Книга: Системное программное обеспечение. Лабораторный практикум
Заполнение матрицы предшествования
Заполнение матрицы предшествования
Для заполнения матрицы операторного предшествования необходимы множества крайних левых и крайних правых терминальных символов, представленные в табл. 3.7, и правила исходной грамматики G.
Заполнение таблицы рассмотрим на примере лексем or и (.
Символ or не стоит рядом с другими терминальными символами в правилах грамматики. Поэтому знак «=.» («составляет основу») для него не используется. Символ or стоит слева от нетерминального символа D в правиле Е ? Е or D. В множество Lt(D) входят символы and, а и (. Поэтому в строке матрицы, помеченной символом or, ставим знак «<.» («предшествует») в клетках на пересечении со столбцами, помеченными символами and, а и (.
Кроме того, символ or стоит справа от нетерминального символа Е в том же правиле Е ? Е or D. В множество Rt(E) входят символы or, xor, and, а и). Поэтому в столбце матрицы, помеченном символом or, ставим знак «.>» («следует») в клетках на пересечении со строками, помеченными символами or, xor, and, а и).
Больше ни в каких правилах символ or не встречается, поэтому заполнение матрицы для него закончено.
Символ (стоит рядом с терминальным символом) в правиле С ? (Е) (между ними должно быть не более одного нетерминального символа – в данном случае один символ Е). Поэтому в строке матрицы, помеченной символом (, ставим знак «=.» («составляет основу») на пересечении со столбцом, помеченным символом).
Символ (также стоит слева от нетерминального символа Е в том же правиле С ? (Е). В множество Lt(E) входят символы or, xor, and, а и (. Поэтому в строке матрицы, помеченной символом (, ставим знак «<.» («предшествует») в клетках на пересечении со столбцами, помеченными символами or, xor, and, а и (.
Больше ни в каких правилах символ (не встречается, поэтому заполнение матрицы для него закончено.
Повторяя описанные выше действия по заполнению матрицы для всех терминальных символов грамматики G, получим матрицу операторного предшествования. Останется только заполнить строку, соответствующую символу «начало строки», и столбец, соответствующий символу «конец строки».
Начальным символом грамматики G является символ S, поэтому для заполнения строки, помеченной ?н, возьмем множество Lt(S). В это множество входят символы if, а и;. Поэтому в строке матрицы, помеченной символом ?н, ставим знак «<.» («предшествует») в клетках на пересечении со столбцами, помеченными символами if, а и;.
Аналогично, для заполнения столбца, помеченного ?к, возьмем множество R^(S). В это множество входит только один символ —;. Поэтому в столбце матрицы, помеченном символом ?к, ставим знак «.>» («следует») в клетке на пересечении со строкой, помеченной символом;.
В итоге получим заполненную матрицу операторного предшествования, которая представлена в табл. 3.8.
- Построение множеств крайних правых и крайних левых символов
- Таблица 3.2. Множества крайних левых и крайних правых символов. Шаг 1
- Таблица 3.3. Множества крайних левых и крайних правых символов. Шаг 2
- Таблица 3.4. Множества крайних левых и крайних правых символов. Шаг 3
- Таблица 3.5. Множества крайних левых и крайних правых символов. Шаг 4 (результат)
- Построение множеств крайних правых и крайних левых терминальных символов
- Таблица 3.6. Множества крайних левых и крайних правых терминальных символов. Шаг 1
- Таблица 3.7. Множества крайних левых и крайних правых терминальных символов. Результат
- Заполнение матрицы предшествования
- Таблица 3.8. Матрица операторного предшествования
- Примеры выполнения разбора предложений входного языка
- Пример 1
- Пример 2
- 9.4.1. Реализация графа в виде матрицы смежности
- Заполнение справочников и каталогов
- Физический размер матрицы
- 6.2. Создание и автоматическое заполнение бланков стандартных документов
- Автозаполнение
- 12.2.1. Заполнение памяти: memset()
- Заполнение таблицы маршрутизации
- Заполнение структур
- 4.4.8. Автоматическое заполнение форм
- 2.2.5. Заполнение справочника сотрудников
- Заполнение справочника ответственных лиц
- Модуль описания матрицы предшествования и правил исходной грамматики