Адаптивная грамматика - это формальная грамматика который явно предоставляет механизмы в рамках формализма, позволяющие манипулировать своими собственными производственными правилами.
Джон Н. Шатт определяет адаптивную грамматику как грамматический формализм, который позволяет явно манипулировать наборами правил (или наборами производственных правил) внутри грамматики. Типы манипуляций включают добавление, удаление и изменение правил.
Первое описание грамматической адаптивности (хотя и не под этим названием) в литературе обычно приводится в статье Альфонсо Караччоло ди Форино, опубликованной в 1963 году. Общепринятая ссылка на адаптивный формализм (расширяемые контекстно-свободные грамматики) пришла из Вегбрайта в 1970 г. при изучении языков расширяемого программирования, за которым последовал динамический синтаксис Хэнфорда и Джонса в 1973 г.
До недавнего времени большая часть исследований формальных свойств адаптивных грамматик не координировалась между исследователями, и только впервые они были обобщены Хеннингом Кристиансеном в 1990 году в ответ на статью в ACM. SIGPLAN Извещения Бориса Бурштейна. Инженерный факультет Университета Сан-Паулу имеет свою лабораторию адаптивных языков и методов, специализирующуюся на исследованиях и практике адаптивных технологий и теории. LTA также поддерживает исследователей именования страниц в этой области.
В то время как ранние попытки касались динамического синтаксиса и расширяемых, изменяемых, динамических и адаптируемых грамматик, более недавнее использование склонны к использованию термина «адаптивный» (или его варианта, например, «адаптатива», в зависимости от языка публикации литературы). Иваи называет свой формализм адаптивными грамматиками, но это конкретное использование просто адаптивных грамматик в настоящее время обычно не используется в литературе без уточнения имени. Более того, между различными исследователями не было предпринято никаких усилий по стандартизации или категоризации, хотя некоторые из них предприняли усилия в этом направлении.
Шатт разделяет модели адаптивной грамматики на две основные категории. категории:
Джексон уточняет таксономию Шатта, ссылаясь на изменения во времени как глобальный и изменяется по пространству как local, и добавляя гибридную пространственно-временную категорию:
Адаптивные формализмы можно разделить на две основные категории: полные грамматические формализмы (адаптивные грамматики) и адаптивные машины, на которых были основаны некоторые грамматические формализмы.
Ниже приводится список (ни в коем случае не полный) грамматических формализмов, которые, согласно приведенному выше определению Шатта, считаются (или были классифицированы их собственными изобретателями как будучи) адаптивными грамматиками. Они перечислены в порядке их первого упоминания в литературе.
Описанная в докторской диссертации Вегбрайта в 1970 году расширяемая контекстно-свободная грамматика состоит из контекстно-свободной грамматики, набор правил которой модифицируется в соответствии с инструкциями, выдаваемыми преобразователем конечного состояния при чтении префикса терминала во время самого левого вывода. Таким образом, набор правил меняется в зависимости от позиции в сгенерированной строке, но этот вариант игнорирует иерархическую структуру синтаксического дерева. Расширяемые контекстно-свободные грамматики были классифицированы Шаттом как императивные.
Впервые представленные в 1985 году как генеративные грамматики, а затем более развитые грамматики Кристиансена (очевидно, так названные Шаттом), возможно, из-за конфликта с порождающими грамматиками Хомского) являются адаптивным расширением грамматик атрибутов. Грамматики Кристиансена были классифицированы Шаттом как декларативные.
Удвоенный язык демонстрируется следующим образом:
→
где w-rule = → w
→ >→ <ε> → a
Впервые представлены в мае 1990 г. и позже В декабре 1990 года были расширены модифицируемые грамматики, которые явно предоставляют механизм для добавления и удаления правил во время синтаксического анализа. В ответ на ответы ACM SIGPLAN Notices Бурштейн позже модифицировал свой формализм и представил свой адаптивный универсальный анализатор синтаксиса и семантики (USSA) в 1992 году. Эти формализмы были классифицированы Шаттом как императивные.
Представленные в 1993 году рекурсивные адаптивные грамматики (RAG) были попыткой ввести мощный формализм Тьюринга, который сохранил большую часть элегантности контекстно-свободных грамматик. Шатт самостоятельно классифицирует RAG как декларативный формализм.
Динамические грамматики Булье, представленные в 1994 году, по-видимому, являются первым семейством грамматик с адаптивной грамматикой, в котором строго введено понятие временного континуума синтаксического анализа как части обозначение самого грамматического формализма. Динамические грамматики - это последовательность грамматик, причем каждая грамматика G i каким-то образом отличается от других грамматик в последовательности с течением времени. Основная статья Булье по динамическим грамматикам также определяет динамический синтаксический анализатор, машину, которая выполняет синтаксический анализ этих грамматик, и показывает примеры того, как его формализм может обрабатывать такие вещи, как проверка типов, расширяемые языки, полиморфизм и другие конструкции, обычно относящиеся к семантической области перевода языков программирования.
Работа Иваи в 2000 году развивает адаптивные автоматы Нето, применяя адаптивные автоматы к контекстно-зависимым грамматикам. Адаптивные грамматики Иваи (обратите внимание на квалификатор по имени) позволяют выполнять три операции во время синтаксического анализа:? запрос (в некоторых отношениях похож на синтаксический предикат , но привязанный к проверке правил, из которых выбираются модификации), + сложение и - удаление (которые он разделяет со своими предшественниками адаптивными автоматами).
Представленное в 2000 г. и наиболее полно обсуждавшееся в 2006 г., §-исчисление (§ здесь произносится как мета-есс) допускает явное добавление, удаление и изменение производств в грамматике, а также обеспечение синтаксических предикатов . Этот формализм сам классифицируется его создателем как императивный и адаптивный, или, более конкретно, как формализм пространственно-временной адаптивной грамматики, и был далее классифицирован другими как аналитический формализм
.Язык удвоения демонстрируется следующим образом:
грамматика ww {S :: = #phi (AX <-"") R; R ::= $C('[ab]') #phi(A.X<-A.X C) #phi(N<=A.X) N | R; };
(Примечание к обозначениям: в приведенном выше примере операторы #phi (...) идентифицируют точки в продукте R, которые явно изменяют грамматику. #phi (AX <-A.X C) represents a global modification (over time) and the #phi(N<=A.X) statement identifies a local modification (over space). The #phi(A.X<-"") statement in the S production effectively declares a global production called A.X by placing the пустая строка в этом продукте до его ссылки на R.)
Впервые описаны Нето в 2001 году, адаптивные Позднее устройства были усовершенствованы и расширены Пистори в 2003 году.
В 2002 году Адам Карми представил формализм адаптивной грамматики на основе LALR (1)
В 2004 году Сезар Браво представил понятие слияния концепции внешнего вида. проверка с помощью адаптивных контекстно-свободных грамматик, ограниченной формы адаптивных грамматик Иваи, показывающей эти новые грамматики, называемой Adaptive CFG s с проверкой внешнего вида мощными по Тьюрингу.
Перечисленные ниже формализмы, хотя и не являются грамматическими формализмами, либо служат основой полных грамматических формализмов, либо включены здесь, потому что они адаптивный характер. Они перечислены в порядке их первого упоминания в литературе.