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, a → q', γq, q'Qzγun'un 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) .A → a α bUNabα
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