Логические грамматики, представленные [Викиданными ], представляют собой класс формальных грамматик, изучаемых в теории формального языка. Они расширяют базовый тип грамматик, контекстно-свободные грамматики, с помощью операций конъюнкции и отрицания. Помимо этих явных операций, логические грамматики допускают неявную дизъюнкцию, представленную несколькими правилами для одного нетерминального символа, который является единственной логической связкой, выражаемой в контекстно-свободных грамматиках. Конъюнкция и отрицание могут использоваться, в частности, для определения пересечения и дополнения языков. Промежуточный класс грамматик, известный как конъюнктивные грамматики, допускает соединение и дизъюнкцию, но не отрицание.
Правила логической грамматики имеют вид
где - нетерминал, и ,..., , ,..., - строки, образованные из символов в и . Неформально такое правило утверждает, что каждая строка на , которая удовлетворяет каждому из синтаксических условий, представленных ,..., и ни один из синтаксические условия, представленные как ,..., , следовательно, удовлетворяет условию, определенному в .
. Существует несколько формальных определений языка, генерируемых булевой грамматикой. У них есть одна общая черта: если грамматика представлена как система языковых уравнений с объединением, пересечением, дополнением и конкатенацией, языки, порожденные грамматикой, должны быть решением этой системы. Семантика отличается в деталях, некоторые определяют языки с помощью языковых уравнений, некоторые опираются на идеи из области логического программирования. Однако эти нетривиальные вопросы формального определения в основном не имеют отношения к практическим соображениям, и можно построить грамматики в соответствии с данной неформальной семантикой. Практические свойства модели аналогичны свойствам конъюнктивных грамматик, в то время как возможности описания дополнительно улучшены. В частности, сохраняются некоторые практически полезные свойства, унаследованные от контекстно-свободных грамматик, такие как эффективные алгоритмы синтаксического анализа, см. Охотин (2010) ошибка harvtxt: нет цели: CITEREFOkhotin2010 (справка ).