Во многих работах с использованием контекстно-свободных грамматик (CFG) примеры таких грамматик, представленные там, часто допускают простую характеристику языка, который они генерируют. Например:
генерирует ,
генерирует и
генерирует или эквивалентно (где обозначает к той части , захваченной ).
Приведенные выше примеры могут быть сгенерированы путем добавления индексов ( ), простых ограничений на эти индексы ( ) и сопоставления с образцом для регулярных выражений. Это заставляет меня задуматься о том, могут ли все контекстно-свободные языки генерироваться каким-либо расширением регулярных выражений.
Существует ли расширение регулярных выражений, которое может генерировать все или некоторое значительное подмножество языков без контекста?
источник
Ответы:
Да, есть. Определите выражение без контекста как термин, сгенерированный следующей грамматикой:
Это все конструкторы для регулярных языков, за исключением звезды Клини, которая заменяется общим оператором с фиксированной точкойμα.g g∗≜μα.ϵ∨g⋅α
Интерпретация выражения без контекста требует учета интерпретации свободных переменных. Поэтому определите окружение которое будет отображаться из переменных в языки (то есть подмножества ), и пусть будет функцией, которая ведет себя как на всех входах, кроме и который возвращает язык для .ρ Σ∗ [ρ|α:L] ρ α L α
Теперь определим интерпретацию выражения без контекста следующим образом:
Используя теорему Кнастера-Тарского, легко увидеть, что интерпретация является наименее фиксированной из выражения.μα.g
Это просто (хотя и не совсем тривиально) показать, что вы можете дать выражение без контекста, выводящее тот же язык, что и любая контекстно-свободная грамматика, и наоборот. Нетривиальность возникает из-за того, что у контекстно-свободных выражений есть вложенные фиксированные точки, а безконтекстные грамматики дают вам одну фиксированную точку над кортежем. Это требует использования леммы Бекича, которая точно говорит о том, что вложенные фиксированные точки могут быть преобразованы в одну фиксированную точку над продуктом (и наоборот). Но это единственная тонкость.
РЕДАКТИРОВАТЬ: Нет, я не знаю стандартную ссылку для этого: я разработал его для своих собственных интересов. Тем не менее, это достаточно очевидная конструкция, которая, я уверен, была изобретена ранее. Некоторые случайные поиски в Google показывают Joost Winter, недавнюю статью Marcello Bonsangue и Jan Rutten Context-Free Languages, Coalgebraically , где они дают вариант этого определения (требующий защиты всех фиксированных точек), который они также называют выражениями без контекста.
источник
На MathOverflow был тесно связанный вопрос (и несколько ответов) о языках, производящие функции которых голономны .
Интересно, что определение Нилом семантики выше точно соответствует (конструктивному) доказательству существования видовых решений рекурсивных уравнений вида через неявную теорему о видах. К сожалению, его схема доказательства также должна содержать тонкую ошибку, так как есть случаи, когда дела идут «бесконечно». Другими словами, на якобиане существует условие преобразования, определяемого грамматикой, чтобы оно было неособым, что необходимо. Вероятно, именно поэтому Бонсанге-Руттен требует, чтобы фиксированные точки были защищены, как один из способов обеспечить это условие на якобиане.μ
источник
Недавно мы опубликовали наброски структуры, которая будет делать именно это. Посмотрите в comp.compilers , куда я отправил уведомление вместе с некоторыми ссылками.
Новые разработки основаны на теореме Хомского-Шютценбергера и могут рассматриваться как завершение этого результата. Сам Хомский был проинформирован о событиях и указывает на желание «наверстать упущенное».
Наряду с этим развитием мы также устанавливаем эквивалентность двух отдельных формулировок для выражений без контекста - одна, которая является расширением / дополнением формы мю-исчисления с «наименьшей фиксированной точкой» (первоначально Gruska, Yntema и McWhirter) - который получил окончательный вид сортов в 2014 году, а другой опубликован в 2008 году.
источник