
- •1. Алфавит, слова, операции над словами
- •2. Языки. Операции над языками
- •3. Абстрактные формальные системы
- •4. Формальные порождающие грамматики
- •5. Классификация грамматик
- •Диаграмма грамматики.
- •Порождение и распознавание цепочек.
- •Детерминизация конечных автоматов
- •Автоматы с - переходами.
- •9. Минимизация числа состояний автомата
- •9.1. Лингвистический автомат.
- •9.2. Метод Хафмена.
- •Регулярные множества и регулярные выражения.
- •Разрешимые проблемы для а-грамматик
- •7. Нотации для задания кс-грамматик.
- •8. Структура цепочек. Су-схемы
- •9. Преобразования грамматик.
- •10. Разрешимые и неразрешимые свойства кс-грамматик
- •11. Синтаксический анализ для кс-языков
- •11.1 Ll(k)-грамматики
- •12.Элементы теории конечных автоматов
- •13.Сети автоматов. Их анализ и синтез.
Разрешимые проблемы для а-грамматик
Теорема:
Если L– А-язык, иZLимеет длину,числа состояний детерминированного автомата, тоZ=WXY, гдеX1иWXiYLдля всехi0.
Доказательство: Пусть есть некоторый А-язык, и автомат ML, порождающий этот язык.
Q-{q0,.q1,q2,…qn-1} – множество состояний автоматаML,n- число состояний автомата,q0 –начальное состояние автомата.
F(q0,Z)K т.к. ZL. Zn , поэтому qjQ , что Z=WXY, X 1, F(q0,W)= qj, F(qj,X )= qj, F(qj, Y)K. Но тогда F(q0,W XiY)K для всех i0, что требовалось доказать.
Теорема:
Проблема не пустоты для А-грамматик разрешима, т.е, если задана А-грамматика G, то существует алгоритм, позволяющий ответить на вопрос:L(G)=?
Например, Из предыдущей теоремы, если L(G), то существует цепочка длины<n, гдеn– число состояний детерминированного автомата (хотя это и не оптимальное решение).
Теорема:
Проблема равносильности А-грамматик разрешима. т.е., если G1иG2 – А-грамматики, то существует алгоритм, позволяющий определить,L(G1)=L(G2)?
Док-во: В случае равенства языков минимизированные детерминированные автоматы, построенные по этим грамматикам, будут совпадать с точностью до обозначений состояний.
Теорема:
Проблема конечности языка, порождаемого А-грамматикой, разрешима.
Обозначим множество состояний, достижимых из состояния Ai =H(Ai). Тогда, если
Ai, такое, чтоAiH(q0)&AiH(Ai)&AjH(Ai)&AjK, то язык, порождаемый автоматом, бесконечен.
Интересно отметить, что подобная теорема существует для КС-грамматик:
7. Нотации для задания кс-грамматик.
Математическая нотация (которую рассматривали до сих пор) – чистый синтаксис.
БНФ (Бекусова нормальная форма, или форма Бекуса — Наура) есть способ записи грамматики, который широко используется для описания синтаксиса языков программирования. В БНФ
нетерминальные символы записываются как имена, заключенные в угловые скобки < > .
Знак записывается как ::=(читается "заменяется на").
Альтернативы замены, соответствующие одному и тому же нетерминалу в левой части, отделяются друг от друга вертикальной чертой (читается "или").
не обозначается, для того, чтобы не пропыстить эту альтернативуЮ она обычно записывается первой в конструкции выбора.
Используя БНФ, описание идентификатора как произвольной последовательности букв и цифр, начинающейся с буквы, можно, например, записать:
<идентификатор> ::=<буква> | <буква> <продолжение>
<продолжение> ::= < символ> | < символ> <продолжение>
<символ> ::= < буква> | <цифра>
<буква> :: =А | В | С|….|Z
<цифра> ::=0 | 1 | ... | 9
Или:
<идентификатор> ::= <буква> <продолжение>
<продолжение> ::= | < символ> <продолжение>
<символ> ::= < буква> | <цифра>
<буква> :: =А | В | С|….|Z
<цифра> ::=0 | 1 | ... | 9
При записи в виде грамматики G13семантику увидеть сложнее(запись полностью соответствует последнему варианту БНФ):
S A B
B A B
ACD
CА | В | С|….|Z
D0 | 1 | ... | 9
Нетерминал БНФ может интерпретироваться как язык, который выводится, если рассматривать данный символ как начальный символ грамматики. БНФ может использоваться для описания синтаксиса любого языка, не только искусственного, например:
<Существительное > :: =<основа > <окончание>
<окончание > ::=окончание множественного числаокончание единственного числа…
Или:
формула исчисления высказываний::=элементарная формула(формула исчисления высказыванийбинарная операцияформула исчисления высказываний)(отрицание
формула исчисления высказываний)
элементарная формула::=константапропозициональная переменная
константа::= 01
пропозициональная переменная ::=ab…z
отрицание::=N
бинарная операция::=
Часто применяется так называемая расширенная БНФ -РБНФ в которой используются также метасимволы (,); [,]; {,}. Ведение метасимволов позволяет сделать запись более лаконичной . Синтаксис РБНФ следующий
Нетерминалы записываются как последовательность символов.
Терминалы( последовательности символов) заключаются в кавычки.
Знак , используемый в математической записи грамматик, обозначается как =.
Альтернативы, как и в математической записи грамматик, разделяются знаком .
Конструкция, заключенная в ,, является необязательной.
Конструкция, заключенная в ,может повторяться произвольное число раз, от 0 (эквивалент * в регулярных выражениях).
( ) служат для факторизации, т.е. конструкция может быть представлена в виде (). Это позволяет использовать конструкцию выбора на более глубоком уровне.
Например, идентификатор в РБНФ будет описан как:
Идентификатор = буква буквацифра
буква = 'А’ | ‘В’ | ‘С’ |….| ‘Z’
цифра = ‘0’ | ‘1’ | ... | ‘9’
Существительное описывается как
существительное = основа ( окончание единственного числаокончание множественного числа)
Фактически, в правой части правил в РБНФ записывается некоторое регулярное выражение, в котором могут использоваться нетерминалы (т.е. расширение возможностей относительно выразительной мощности обычных регулярных выражений, т.к. обычные регулярные выражения позволяют описывать А-языки, а РБНФ – КС-языки.
Синтаксическая диаграмма. Синтаксическая диаграмма – графическая форма представления РБНФ. Для каждого нетерминала рисуется своя диаграмма. Приняты следующие обозначения:
Нетерминалы заключаются в прямоугольники.
Терминалы заключаются в овалы.
Образы нетерминалов и терминалов соединяются линиями (со стрелками или без, мы будем использовать стрелки для указания направления движения) т.о., чтобы множество путей соответствовало множеству цепочек из терминалов и нетерминалов, задаваемому РБНФ - правилами, для которых строится диаграмма.
Диаграммы для конструкции выбора и итерации представлены на рис. 22, а и б, соответственно. Скругленный прямоугольник может быть заменен как прямоугольником (в случае нетерминала), так и овалом ( в случае терминала).
Набор диаграмм для идентификатора на рис. 23.
Буква
Цифра
Буква
Буква
….
А B
Z
Идентификатор
….
1
0
2
Цифра
а
б
Рис.22
Рис.23
В большинстве случаев существует не единственная форма представления для одних и тех же объектов.
Легко показать, что выразительная мощность РБНФ и БНФ совпадает:
Условная запись РБНФ |
Условная запись БНФ для данной РБНФ |
А= (12) |
<А> ::=<>< 1>< ><2> |
А= [ ] |
<А> ::=<>< >< > |
А= { } |
<А> ::= <B ><> <B> ::= <> < B> |