Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Пример [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типы [ править ]

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

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

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

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

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

Ссылки [ править ]

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