Esiste un'estensione delle espressioni regolari che cattura le lingue libere dal contesto?


25

In molti articoli che coinvolgono grammatiche senza contesto (CFG), gli esempi di tali grammatiche presentati spesso ammettono facili caratterizzazioni del linguaggio che generano. Per esempio:

S SaaSb
S

genera ,{a2ibi|i0}

SaSb
SaaSb
S

genera {aibjij0} e

SaSa
SbSb
S

genera {wwRw(a|b)} , o equivalentemente {((a|b))1((a|b))2p1=p2R} (dove p1 riferisce alla parte catturato da (...)1 ).

Tutti gli esempi sopra riportati possono essere generati aggiungendo indici ( ai ), semplici vincoli su questi indici ( i>j ) e pattern matching alle espressioni regolari. Questo mi fa domandare se tutti i linguaggi senza contesto possano essere generati da una certa estensione delle espressioni regolari.

Esiste un'estensione delle espressioni regolari che può generare tutto o alcuni sottogruppi significativi delle lingue libere dal contesto?


3
Nota che aggiungere indici e vincoli è troppo potente: sarai in grado di definire , che non è un CFL. anbncn
Shaull

Risposte:


34

Si C'è. Definire un'espressione senza contesto come termine generato dalla seguente grammatica:

g::=ϵEmpty string|cCharacter c in alphabet Σ|ggConcatenation|Failing pattern|ggDisjunction|μα.gRecursive grammar expression|αVariable 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]]ρ={c}[[g1g2]]ρ={w1w2|w1[[g1]]ρw2[[g2]]ρ}[[]]ρ=[[g1g2]]ρ=[[g1]]ρ[[g2]]ρ[[α]]ρ=ρ(α)[[μα.g]]ρ=nNLnwhereL0=Ln+1=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.


Questo è davvero fantastico. Esiste un nome standard o un riferimento per questo?
Alex ten Brink,

5
Arto Salomaa tratta questo nel suo libro "Formal Languages" nel 1973. Li chiama "Espressioni regolari".
Tim Schaeffer,

3

C'era una domanda strettamente correlata (e diverse risposte) su MathOverflow riguardo alle lingue le cui funzioni generatrici sono olonomiche .

È interessante notare che la definizione di Neel della semantica di sopra corrisponde esattamente alla prova (costruttiva) dell'esistenza di soluzioni di specie alle equazioni di specie ricorsive tramite il teorema di specie implicito. Sfortunatamente, il suo schema di prova deve contenere anche un sottile errore, in quanto vi sono casi in cui le cose diventano "infinite". In altre parole, esiste una condizione per il giacobino della trasformazione definita dalla grammatica come non-singolare necessaria. Questo è probabilmente il motivo per cui Bonsangue-Rutten richiede che i punti fissi siano custoditi, come un modo per assicurare questa condizione al giacobino.μ


AFAICT, Winter et al. Richiedono solo cautela per essere sicuri di poter prendere il derivato Brzozowski di prendendo il derivato di . [ μ α .μα.g[μα.g/α]g
Neel Krishnaswami,

1

Di recente abbiamo pubblicato i contorni di un framework che farà proprio questo. Guarda sotto comp.compilers , dove ho inviato una notifica insieme ad alcuni link.

I nuovi sviluppi si basano sul teorema di Chomsky-Schuetzenberger e possono essere considerati un completamento di questo risultato. Chomsky stesso è stato informato degli sviluppi e indica il desiderio di "recuperare".

Insieme a questo sviluppo, stabiliamo anche l'equivalenza di due formulazioni separate per espressioni senza contesto - una che è un'estensione / completamento della forma mu-calculus "punto minimo fisso" (originariamente di Gruska, Yntema e McWhirter) - che ha ricevuto una sorta di formulazione finale nel 2014 - e l'altra pubblicata nel 2008.


4
Si prega di includere tutte le informazioni pertinenti nella risposta stessa. "Guarda sotto comp.compilers" è una risposta inutile già ora, e sarà completamente inutile tra un paio di mesi.
Emil Jeřábek sostiene Monica il

È totalmente sbagliato. Comp.compilers (a differenza di questo sito e di altri blog, a proposito) è archiviato in modo permanente. Lì troverai tutti i dettagli di cui hai bisogno. Ci sono molti collegamenti che possono essere trovati lì, anche nell'articolo pubblicato più di recente. Inoltre, a differenza dei siti di blog, è aperto all'esterno e utile a un pubblico molto più ampio. Non dovresti avere difficoltà a trovare qualcosa su USENET, che è dove le domande come questa dovrebbero essere affrontate e discusse. Se hai difficoltà, ecco il link. groups.google.com/forum/#!topic/comp.compilers/YCa5jHUR1iQ
NinjaDarth

2
Il problema non è che non è archiviato, ma che gli archivi sono vasti. Quando cerco gli archivi ora posso trovare il tuo post da qualche parte in alto, ma quando qualcuno vedrà questa risposta tra qualche mese o anni nel futuro, non avranno idea di dove iniziare a scavare. È arrogante e maleducato fare in modo che i lettori facciano una ricerca lunga e inaffidabile quando puoi indicarli in una posizione più specifica. Ora l'ho fatto per te. Ci sono voluti circa 30 secondi. Avresti potuto farlo da solo.
Emil Jeřábek sostiene Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.