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