Эта статья требует дополнительных ссылок для проверки . ( февраль 2009 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Грамматика аффикс является своего рода формальной грамматики ; он используется для описания синтаксиса языков, в основном компьютерных языков , с использованием подхода, основанного на том, как обычно описывается естественный язык. [1]
Грамматические правила грамматики аффиксов аналогичны правилам грамматики, не зависящей от контекста , за исключением того, что определенные части нетерминалов ( аффиксы ) используются в качестве аргументов. Если один и тот же аффикс встречается в правиле несколько раз, его значение должно совпадать , т.е. оно должно быть одинаковым везде. В некоторых типах грамматики аффиксов возможны более сложные отношения между значениями аффиксов.
Пример [ править ]
Мы можем описать чрезвычайно простой фрагмент английского языка следующим образом:
- Предложение → Предикат темы
- Тема → Существительное
- Предикат → Глагол Объект
- Объект → Существительное
- Существительное → Иоанн
- Существительное → Мария
- Существительное → дети
- Существительное → родители
- Глагол → нравится
- Глагол → любит
- Глагол → помощь
- Глагол → помогает
Эта контекстно-свободная грамматика описывает простые предложения, такие как
- Джон любит детей
- Мэри помогает Джону
- дети помогают родителям
- родители как Джон
Благодаря большему количеству существительных и глаголов и большему количеству правил, вводящих другие части речи, можно описать большой диапазон английских предложений; так что это многообещающий подход для описания синтаксиса английского языка.
Однако данная грамматика также описывает такие предложения, как
- Джон как дети
- дети помогают родителям
Эти предложения неверны: в английском языке подлежащее и глагол имеют грамматическое число , которое должно совпадать.
Грамматика аффиксов может выразить это напрямую:
- Предложение → Тема + число Предикат + число
- Тема + число → Существительное + число
- Предикат + число → Глагол + объект числа
- Объект → Существительное + число
- Существительное + единственное число → Иоанн
- Существительное + единственное число → Мария
- Существительное + множественное число → дети
- Существительное + множественное число → родители
- Глагол + единственное число → любит
- Глагол + множественное число → как
- Глагол + единственное число → помогает
- Глагол + множественное число → справка
Эта грамматика описывает только правильные английские предложения, хотя можно утверждать, что
- Джон любит Джона
по-прежнему неверно и вместо этого следует читать
- Джон любит себя
Это тоже можно включить с помощью аффиксов, если средства описания отношений между различными значениями аффиксов достаточно эффективны. Как отмечалось выше, эти средства зависят от типа выбранной грамматики аффиксов.
Типы [ править ]
В простейшем типе грамматики аффиксов аффиксы могут принимать значения только из конечной области, а значения аффиксов могут быть связаны только посредством соглашения, как в примере. Применяемые таким образом аффиксы увеличивают компактность грамматики, но не добавляют выразительной силы.
Другой подход - разрешить аффиксам принимать произвольные строки в качестве значений и разрешить использование в правилах конкатенации аффиксов. Диапазоны допустимых значений аффиксов можно описать с помощью правил грамматики, не зависящих от контекста. Это создает формализм двухуровневых грамматик , также известных как грамматики Ван Вейнгаардена или грамматики 2VW . Они были успешно использованы для описания сложных языков, в частности, синтаксис Algol 68 языка программирования . Однако оказывается, что, хотя значения аффиксов можно манипулировать только конкатенацией строк, этот формализм является полным по Тьюрингу.; следовательно, даже самые основные вопросы о языке, описываемом произвольной грамматикой 2VW, вообще неразрешимы .
Грамматики расширенных аффиксов , разработанные в 1980-х годах, представляют собой более ограниченную версию той же идеи. В основном они применялись для описания грамматики естественного языка, например английского.
Другая возможность - разрешить вычисление значений аффиксов с помощью кода, написанного на каком-либо языке программирования. Были использованы два основных подхода:
- В грамматиках атрибутов аффиксы (называемые атрибутами) могут принимать значения из произвольных областей (например, целые или действительные числа, сложные структуры данных), и могут быть указаны произвольные функции, написанные на выбранном языке, чтобы описать, как значения аффиксов в правилах выводятся друг от друга.
- В CDL (язык описания компиляторов ) и его преемнике CDL2 , разработанном в 1970-х годах, фрагменты исходного кода (обычно на языке ассемблера ) могут использоваться в правилах вместо обычных правых частей, что позволяет использовать примитивы для сканирования ввода и вычислений аффиксных значений. выражаться прямо. Разработанный в качестве основы для практического построения компилятора , этот подход использовался для написания компиляторов и другого программного обеспечения, например текстового редактора .
Ссылки [ править ]
- ^ Костер, Корнелис HA. « Добавляйте грамматики для естественных языков ». Грамматики атрибутов, приложения и системы. Шпрингер, Берлин, Гейдельберг, 1991.