Si C'è. Definire un'espressione senza contesto come termine generato dalla seguente grammatica:
g::=||||||ϵcg⋅g⊥g∨gμα.gαEmpty stringCharacter c in alphabet ΣConcatenationFailing patternDisjunctionRecursive grammar expressionVariable expression
Questi sono tutti i costruttori per linguaggi regolari tranne la stella di Kleene, che viene sostituita da un operatore a virgola fissa generale μα.gg∗≜μα.ϵ∨g⋅α
L'interpretazione di un'espressione libera dal contesto richiede una spiegazione per l'interpretazione delle variabili libere. Quindi definisci un ambiente
come una mappa dalle variabili alle lingue (cioè sottoinsiemi di
), e lascia che sia la funzione che si comporta come su tutti gli input tranne e che restituisce la lingua per .Σ ∗ [ ρ | α : L ] ρ α L αρΣ∗[ρ|α:L]ραLα
Ora, definisci l'interpretazione di un'espressione senza contesto come segue:
[[ϵ]]ρ[[c]]ρ[[g1⋅g2]]ρ[[⊥]]ρ[[g1∨g2]]ρ[[α]]ρ[[μα.g]]ρwhereL0Ln+1========={ϵ}{c}{w1⋅w2∣|w1∈[[g1]]ρ∧w2∈[[g2]]ρ}∅[[g1]]ρ∪[[g2]]ρρ(α)⋃n∈NLn∅Ln∪[[g]][ρ|α:Ln]
Usando il teorema di Knaster-Tarski, è facile vedere che l'interpretazione di è la meno fissa dell'espressione.μα.g
È semplice (anche se non del tutto banale) dimostrare che puoi dare un'espressione senza contesto derivando la stessa lingua di qualsiasi grammatica senza contesto e viceversa. La non banalità deriva dal fatto che le espressioni senza contesto hanno punti fissi nidificati e le grammatiche senza contesto forniscono un singolo punto fisso su una tupla. Ciò richiede l'uso del lemma di Bekic, che dice precisamente che un punto fisso nidificato può essere convertito in un singolo punto fisso su un prodotto (e viceversa). Ma questa è l'unica sottigliezza.
EDIT: No, non conosco un riferimento standard per questo: l'ho elaborato per il mio interesse. Tuttavia, è una costruzione abbastanza ovvia che sono sicuro che sia stato inventato prima. Alcuni googling casuali rivelano Joost Winter, Marcello Bonsangue e il recente articolo di Context-Free Languages, Coalgebraically di Jan Rutten
, in cui forniscono una variante di questa definizione (che richiede la protezione di tutti i punti fissi) che chiamano anche espressioni senza contesto.