Quali buone notazioni esistono per linguaggi deterministici privi di contesto e visibilmente pushdown?


10

Le lingue deterministiche senza contesto (DCFL) e le lingue visibilmente pushdown (VPL) sono entrambi insiemi di lingue formali tra lingue senza contesto (CFL) e lingue regolari (REG). Esiste una notazione leggibile che può essere espressa in ASCII normale come Backus-Naur-Form per CFL ed espressioni regolari per REG?


1
Potrebbe essere utile chiarire il significato di "buono" nel titolo della domanda. Cosa c'è di sbagliato nell'usare BNF per descrivere un DCFL?
Tsuyoshi Ito,

1
Intendo dire che dovrebbe essere facile da leggere e scrivere per gli esseri umani, quindi dovrebbe essere basato su ASCII. BNF è eccezionale: le espressioni regolari sono un sottoinsieme compatto di BNF. Ma quale sottoinsieme di BNF definisce DCFL e quale definisce VPL?
Jakob,

Risposte:


5

Per quanto riguarda i DCFL, non vedo una notazione migliore della funzione di transizione dell'automa deterministico di pushdown, cioè scrivere esplicitamente regole di forma con q , q in Q , z un simbolo di pila, γ una sequenza di simboli di stack e aq,z,aq,γq,qQzγaun simbolo di input o la stringa vuota. La notazione stessa non applica il determinismo, ma è facilmente verificabile. Usando un tipo di notazione grammaticale senza contesto (come BNF), vi imbatterete in problemi poiché i DCFL sono una sottoclasse corretta di CFL e, come notato da DaniCL, non potete decidere in generale dato a un CFG se il suo linguaggio è deterministico.

Per quanto riguarda i VPL, uno stile tra parentesi / parentesi per i CFG sarebbe abbastanza buono, con le regole del modulo dove A è un non terminale, un simbolo di chiamata, b un simbolo di ritorno e α una sequenza di espressione regolare su misto simboli interni e non terminali. Poiché qualsiasi VPL è anche un (D) CFL, è possibile anche riutilizzare la notazione di cui sopra per gli automi pushdown e verificare che le operazioni dello stack corrispondano alle chiamate e ai ritorni, oppure scrivere la relazione di transizione di un automa a parola nidificata (che sarebbe meno ridondante) .AaαbAabα

Modifica: vieni a pensarci, una notazione per schemi XML, come la sintassi compatta di RelaxNG --- che è una notazione ASCII ---, potrebbe essere facilmente usata per i VPL. Dovresti solo applicare alcune convenzioni di denominazione per i tag, ad esempio un tag di apertura "<ab>" per un simbolo di chiamata e tag di chiusura "</ab>" per un simbolo di ritorno b .ab


Grazie! Per quanto riguarda i DCFL, penso che questa sia la giusta direzione. Una sintassi concreta avrebbe alcune utili abbreviazioni per sottoinsiemi analizzati da espressioni regolari. Per quanto riguarda i VPL, non sono ancora sicuro, perché a un VLP è consentito avere chiamate penzolanti e restituire simboli in contrasto con i modelli ad albero come XML. Puoi confrontarlo meglio con una sequenza secondaria arbitraria di eventi SAX da un albero XML arbitrario. Dubito che RelaxNG possa descriverlo.
Jakob,

L'osservazione Using ... è deterministica. è un altro punto: non dice nulla sul fatto che esista una sottoclasse del CFG che descriva molto chiaramente tutti i DCFL e nient'altro. Come grammatiche LR (k).
reinierpost

@reinerpost: true, ma (a mia difesa) non prenderei in considerazione le grammatiche LR (1) per fornire una notazione sintattica , perché è necessario verificare la condizione LR (1).
Sylvain,

3

Per trovare una rappresentazione canonica, considerare quanto segue: la classe di DCFL è equivalente alla classe di linguaggi generati dalle grammatiche LR (k), che è di nuovo equivalente a LR (1). Ciò significa che puoi trovare una grammatica LR (1) per ogni DCFL. Certo, una grammatica LR (1) è ancora una grammatica senza contesto, ma con una proprietà speciale: dalle grammatiche LR (1), possiamo facilmente costruire tabelle di analisi per guidare un parser deterministico (con un lookahead di 1 simbolo, quindi LR (1)). Queste tabelle di analisi sarebbero un'altra rappresentazione, sebbene in qualche modo meno leggibile.

A proposito, tieni presente che è indecidibile se un determinato linguaggio privo di contesto sia deterministico (il teorema di Greibach).

Devo ammettere di non aver mai sentito parlare di VPL.


Bene, le rappresentazioni canoniche sono raramente facili da leggere, ma grazie per le indicazioni. Se il Teorema di Greibach afferma che ci sono lingue in CFL che non si può decidere di essere in DCFL - come si specificano queste lingue? Se hai una grammatica, potresti esprimerla in Backus Naur Form (BNF), quindi il teorema di Greibach sembra implicare che non esiste un sottoinsieme di BNF che esprima esattamente DCFL? Le lingue visibilmente pushdown sono anche conosciute come "parole nidificate". Questa classe di lingue è relativamente nuova ma rilevante per l'analisi di alberi ordinati e strutture simili.
Jakob,

Informazioni sul problema dell'indecidibilità: una lingua è un CFL se esiste una grammatica senza contesto (CFG) che lo genera. Se ti viene dato un CFG, puoi decidere se questa grammatica è LR (k), quindi deterministica. (Lo stesso vale per gli automi pushdown - è facile controllare se un determinato PDA è deterministico o meno.) Tuttavia, supponiamo di avere un CFG che non sia LR (k) - questo non significa che la lingua non sia un DCFL ; potresti non riuscire a trovare una grammatica LR (k) per questo.
DaniCL,

"puoi decidere se questa grammatica è LR (k)" per k fisso.
Sylvain,

@Jakob: il teorema di Greibach non afferma che, e anche se lo facesse, significherebbe solo che i CFG arbitrari non sono un formalismo di notazione adatto ai DCFG, proprio come non sono un buon formalismo di notazione per i linguaggi regolari (sia che CFG descrive anche che un linguaggio regolare è indecidibile). Non c'è nulla di sbagliato tuttavia nella scelta di una sottoclasse dei CFG (ad esempio le grammatiche regolari per le lingue normali).
reinierpost

C'è una tradizione di formulazione sciatta nei libri di testo qui: tendono a fare affermazioni come "è indecidibile se un CFL sia regolare / deterministico" quando ciò che realmente significano è "è indecidibile se un CFG descriva un regolare / deterministico linguaggio".
reinierpost
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.