Один из способов рассмотрения регулярных выражений - это конструктивное доказательство следующего факта: можно создавать регулярные языки, начиная с небольшого набора языков и комбинируя их с помощью небольшого фиксированного набора свойств замыкания. В частности, если мы начнем с пустого языка, языка, содержащего пустую строку, и языков всех односимвольных строк, мы можем собрать все возможные обычные языки, используя объединение, конкатенацию и звезду Клини.
Существует ли набор базовых языков и свойств замыкания, которые можно использовать для генерации всех и только контекстно-свободных языков? (Для пояснения: я не спрашиваю, можете ли вы писать регулярные выражения для всех CFL, что, как я знаю, невозможно. Вместо этого мне интересно, существует ли способ разработки структуры, подобной регулярному выражению для CFL, основанной на те же основные принципы.)