Si consideri la seguente estensione alle grammatiche context-free che consente alle regole di avere sul lato sinistro, uno (o più) terminale sul lato destro del non-terminale. Cioè, le regole della forma:Estensione al CFG, che cos'è?
A b -> ...
Il lato destro potrebbe essere qualsiasi cosa, come nelle grammatiche context-free. In particolare, è necessario non, che alla fine il lato destro abbia esattamente lo stesso simbolo del terminale. In tal caso, questa estensione sarebbe sensibile al contesto. Ma il terminale non è solo un contesto. A volte, questo terminale è chiamato "pushback".
Chiaramente, questo non è più CFG (tipo-2). Include type-1. Ma cos'è? Hai già inserito il tipo-0?
Questa estensione particolare è consentita in Definitive Clause Grammars dcg in Prolog. (Per evitare equivoci, non considero le estensioni complete di Prolog. Vale a dire che i terminali provengono da un alfabeto finito e non sono termini arbitrari, inoltre non considero gli argomenti aggiuntivi di Prolog che sono consentiti nei DCG, che vanno anche in type- . 0 già)
Edit: Ecco un modo semplice per descrivere l'estensione: Aggiungere a una normativa CFG del modulo
A b -> <epsilon>
Come fai a sapere che il push-back corrisponde a una regola A b -> ...? Perché non b A -> ...? –
@CookieMonster: Questo è ciò di cui parla il formalismo di Colmerauer. – false
Non necessariamente, soprattutto senza riferimenti a portata di mano. Potrebbe essere anche una cosa lambek. –