ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Матрицы и функции предшествования.Иногда вводят 2 числовые функции, обладающие свойствами: если Х⋖.Y, то Ф1(Х)<Ф2(Y) и т.д. для ≐, ⋗. Нужно использовать топологическую сортировку. Кстати, используя сортировку нетерминалов, можно проще строить функции L и R.
lt (A) = {tÎST | A ® tz или ($ C ÎSN) A ® Ctz } rt (A) = {tÎST | A ® zt или ($ C ÎSN) A ® ztC } Lt (A) = lt (A) È lt (B) "(B Î L (A) Ç SN) Rt (A) = rt (A) È rt (B) "(B Î R (A) Ç SN) Lt (A) = {tÎST | A Þ+ tz или ($ C ÎSN) A Þ+ Ctz }, Rt (A) = {tÎST | A Þ+ zt или ($ C ÎSN) A Þ+ ztC } 4.7. Грамматики операторного предшествования (ГОП). (АУ-492) Операторной грамматикой называется приведенная грамматика без е -правил, в которой правые части правил не содержат смежных нетерминалов. Пример: G0-операторная грамматика. Отношения предшествования задаются на ST È {$}. Пусть a, b ÎST, gÎSNÈ{ e }. Тогда a ≐ b Û (A ® aagbb) Î P, a ⋖ b Û (A ® aaBb) Î P & (B Þ+ gbd Û b Î Lt (B)) $⋖ a Û S Þ+ gaa Û a Î Lt (S), a ⋗ b Û (A ® aBbb) Î P & (B Þ+ dag Û a Î Rt (B)) a ⋗$ Û S Þ+ aag Û a Î Rt (S). Операторная грамматика называется грамматикой операторного предшествования (ГОП), если между любыми двумя терминалами выполняется не более одного отношения операторного предшествования. Оказывается, что G 0 является ГОП.
По G строится остовная грамматика G S = ({ S }, ST, P ¢, S): A ®Y1…Y m Î P Þ S®X1…X m Î P ¢ & Xi = if Yi ÎST then Yi else S. Т.е. все нетерминалы заменяются на корневой символ, а если при этом возникнет цепное правило (S®S) Î P¢, то его удаляют. Легко видеть, что L (G) L (Gs). Для G 0 остовной будет грамматика G 2: E ® E + E | E * E | (E) | a. Она, очевидно, неоднозначна. Но матрица-то строилась по G 0!! Построение анализатора, используещего ОП. Вход: ГОП. Выход: дерево свертки. Алгоритм см. ГПП.
Восстанавливаем по правому разбору:
4.8. Сравнительный анализ грамматик и языков. (АУ1 502, АУ2 193) КС-грамматики É ГОП Примеры языков разных типов. (m, n ³ 1) È однозначные È LR É LL È LR(1) È ГПП Примеры грамматик. G1ÎLL(1): S ® AS | e, A ® aA | b. G2ÎLR(1): S ® SaSb | e. G3ÎLL(2): S ® abA | e, A ® Saa | b. G4ÎLL(2): S ® aAaa | bAba, A ® b | e. G5ÎLL(3): S ® aAaB | aAbB, A ® ab | a, B ® cB | a.??? G6ÎLR(0): S ® B | C, B ® aB | b, C ® aC | c. G7ÏLR(k): S ® Ab | Dc, A ® Aa | e, D ® Da | e. G8ÎLR(2)???: S ® aB, B ® abbb | abba. ~ G9: S ® aabbC, C ® a | b. 4.9. Обработка синтаксических ошибок. Обработка состоит в диагностике (определение типа и места) ошибки и нейтрализации. Стратегии нейтрализации. 1. Режим переполоха (недопустимый символ игнорируется, изолируются все последующие символы до так называемого опорного; из стека удаляются символы, связанные с удаленным фрагментом). 2. Исключение символов (игнорирование символов до допустимого). х:= s +y+ z)*(w + v) первую скобку удаляем и анализируем дальше. Надо быть осторожным, особенно при удалении опорного символа. 3. Вставка символов (между недопустимыми символами вставляется символ, делающий их допустимыми). Вставка может привести к зацикливанию. Не нашли, что искали? Воспользуйтесь поиском:
|