Аффикс грамматики - Affix grammar

An аффиксная грамматика это своего рода формальная грамматика; он используется для описания синтаксис языков, в основном компьютерные языки, используя подход, основанный на том, как обычно описывается естественный язык.[1]

Грамматические правила грамматики аффиксов аналогичны правилам грамматики контекстно-свободная грамматика, за исключением того, что некоторые части в нетерминалах ( аффиксы ) используются в качестве аргументов. Если один и тот же аффикс встречается в правиле несколько раз, его значение должно согласны, т.е. он должен быть везде одинаковым. В некоторых типах грамматики аффиксов возможны более сложные отношения между значениями аффиксов.

Пример

Мы можем описать чрезвычайно простой фрагмент английского языка следующим образом:

ПриговорПредмет Предикат
ПредметИмя существительное
ПредикатГлагол Объект
ОбъектИмя существительное
Имя существительное → Джон
Имя существительное → Мэри
Имя существительное → дети
Имя существительное → родители
Глагол → нравится
Глагол → лайки
Глагол → помощь
Глагол → помогает

Этот контекстно-свободная грамматика описывает простые предложения, такие как

Джон любит детей
Мэри помогает Джону
дети помогают родителям
родители как Джон

С большим количеством существительных и глаголов и большим количеством правил для введения других частей речи можно описать большой диапазон английских предложений; так что это многообещающий подход для описания синтаксиса английского языка.

Однако данная грамматика также описывает такие предложения, как

Джон как дети
дети помогают родителям

Эти предложения неверны: в английском языке подлежащее и глагол имеют грамматический номер, с чем надо согласиться.

Грамматика аффиксов может выразить это напрямую:

ПриговорПредмет + число Предикат+номер
Предмет + номерИмя существительное + номер
Предикат + номерГлагол + номер Объект
ОбъектИмя существительное + номер
Имя существительное + единственное число → Джон
Имя существительное + единственное число → Мэри
Имя существительное + множественное число → дети
Имя существительное + множественное число → родители
Глагол + единственное число → лайки
Глагол + множественное число → нравится
Глагол + единственное число → помогает
Глагол + множественное число → помощь

Эта грамматика описывает только правильные английские предложения, хотя можно утверждать, что

Джон любит Джона

по-прежнему неверно и вместо этого следует читать

Джон любит себя

Это также можно включить с помощью аффиксов, если средства описания отношений между различными значениями аффиксов достаточно эффективны. Как отмечалось выше, эти средства зависят от типа выбранной грамматики аффиксов.

Типы

В простейшем типе грамматики аффиксов аффиксы могут принимать значения только из конечной области, а значения аффиксов могут быть связаны только по соглашению, как в примере. Примененные таким образом аффиксы увеличивают компактность грамматики, но не добавляют выразительной силы. .

Другой подход - разрешить аффиксам принимать произвольные строки в качестве значений и разрешить использование в правилах конкатенации аффиксов. Диапазоны допустимых значений аффиксов можно описать с помощью правил грамматики, не зависящих от контекста. Это дает формализм двухуровневые грамматики, также известный как Грамматики Ван Вейнгаардена или же 2VW грамматики. Они успешно использовались для описания сложных языков, в частности, синтаксиса Алгол 68 язык программирования. Однако оказывается, что, хотя значения аффиксов можно манипулировать только конкатенацией строк, этот формализм является Тьюринг завершен; следовательно, даже самые основные вопросы о языке, описываемом произвольной грамматикой 2VW, являются неразрешимый в целом.

Расширенные грамматики аффиксов, разработанные в 1980-х годах, представляют собой более ограниченную версию той же идеи. В основном они применялись для описания грамматики естественного языка, например Английский.

Другая возможность - позволить вычислить значения аффиксов с помощью кода, написанного на каком-либо языке программирования. Были использованы два основных подхода:

  • В грамматики атрибутов, аффиксы (называемые атрибутами) могут принимать значения из произвольных областей (например, целые или действительные числа, сложные структуры данных), а также могут быть указаны произвольные функции, написанные на выбранном языке, чтобы описать, как значения аффиксов в правилах выводятся друг из друга .
  • В CDL ( Язык описания компилятора ) и его преемник CDL2, разработанные в 1970-х годах, фрагменты исходного кода (обычно в язык ассемблера ) можно использовать в правилах вместо обычных правых частей, что позволяет напрямую выражать примитивы для сканирования ввода и вычислений значений аффиксов. Создан как основа для практических компилятор конструкции, этот подход использовался для написания компиляторов и другого программного обеспечения, например а Текстовый редактор.

Рекомендации

  1. ^ Костер, Корнелис HA. "Добавляйте грамматики для естественных языков. »Атрибутные грамматики, приложения и системы. Springer, Берлин, Гейдельберг, 1991.