I linguaggi C++, C# o Java sono privi di contesto o sensibili al contesto?Le grammatiche dei linguaggi di programmazione moderni sono prive di contesto o sensibili al contesto?
risposta
C++ non è né context-free né sensibile al contesto, dal momento che il template system is Turing-complete e determinare se un pezzo di codice C++ è legale C++ è indecidibilmente difficile. Ad esempio, potrei definire una classe template che simula una TM su una stringa e quindi crea una costante con valore 1 se la macchina accetta e 0 se non lo fa. Se ho fatto, quindi il seguente codice sarebbe legale sse TM fermato sull'ingresso proposta:
int myArray[TMTemplate</* ... args ... */>::value];
Poiché se TM respinge, questo crea un array di dimensione 0, che non è consentito.
Né C# né Java sono privi di contesto, poiché è noto che il controllo di una variabile utilizzata correttamente e in modo coerente in un particolare ambito non è privo di contesto (la dimostrazione è complessa e si basa su Ogden's lemma). Tuttavia, non sono sicuro se siano sensibili al contesto.
Spero che questo dia una risposta parziale alle tue domande!
Non sono sicuro che la completezza dei modelli influenzi la * grammatica * del C++. Certo, i risultati della metaprogrammazione del modello possono decidere se un programma supera determinati controlli semantici, ma ciò va ben oltre lo scopo delle grammatiche. E i modelli non cambiano nulla sulla sintassi: se il programma ha un errore di sintassi, i modelli non vengono instanciati e, se sono instanciati, non danno mai errori di sintassi. Prendi in considerazione anche tutte le lingue tipizzate in modo statico sensibili al contesto perché devi conoscere tutti i tipi coinvolti per decidere se, ad es. una dichiarazione di assegnazione è valida? – delnan
@ delnan- Stavo interpretando la domanda in modo tale che qualsiasi linguaggio tipizzato staticamente non sia privo di contesto, poiché la correttezza del programma dipende da come i tipi si riferiscono. Mi sto avvicinando a questo dal punto di vista di "se hai raccolto tutte le stringhe che rappresentano programmi X legali, che tipo di linguaggio torni?" Quel set non è privo di contesto, anche se come precondizione per essere valido la stringa deve essere nella grammatica. Ha senso? E questa è un'interpretazione irragionevole della domanda? – templatetypedef
Secondo questa interpretazione, la tua risposta ha un senso. Non è come avrei interpretato la domanda, ma perché presumo che "linguaggio senza contesto" (usato da OP) sia solo una scorciatoia per "linguaggio con una grammatica senza contesto". Ma penso che abbia senso (e se quella era davvero la domanda, la tua risposta è corretta). Dovresti aggiungere questa spiegazione alla risposta, per evitare ulteriori equivoci. – delnan
- 1. La "regex" nei linguaggi di programmazione moderni è davvero "grammatica sensibile al contesto"?
- 2. I normali tipi di dati algebrici haskell equivalgono a grammatiche senza contesto? Che dire di GADTS?
- 3. Frequenza dei simboli nei linguaggi di programmazione
- 4. Uso reale dei linguaggi di programmazione concatenativi
- 5. I linguaggi di programmazione con evidenziazione della sintassi sono possibili utilizzando le espressioni regolari?
- 6. Contesto di applicazione SharedPreferences contesto di attività
- 7. I linguaggi di programmazione funzionale sono adatti alla programmazione grafica?
- 8. Linguaggi di programmazione SIMD
- 9. Le operazioni di stringa .NET sono sensibili al maiuscolo/minuscolo?
- 10. Automobili Linguaggi di programmazione
- 11. matematiche Linguaggi di programmazione
- 12. Come posso restituire valori di ritorno sensibili al contesto in Perl 6?
- 13. Linguaggi di programmazione funzionale introspezione
- 14. Che cos'è un elenco di linguaggi di programmazione al curry?
- 15. Spring-MVC: cosa sono "contesto" e "spazio dei nomi"?
- 16. Endianness nei linguaggi di programmazione
- 17. I nomi dei domini IDN sono sensibili al maiuscolo/minuscolo?
- 18. Pattern di programmazione Node.js per ottenere il contesto di esecuzione
- 19. Convergenza di linguaggi matematici e di programmazione
- 20. Come distinguere se un dato oggetto di contesto è un contesto di attività o di servizio?
- 21. esempio di delega relativo al contesto java
- 22. Contesto richiesta di accesso ovunque
- 23. Il ruolo dei linguaggi di scripting nel gioco Programmazione
- 24. Cosa significa "offset" nel contesto della programmazione?
- 25. Sono consentite le grammatiche boost-spirit ricorsive?
- 26. Dove sono le grammatiche dell'albero in ANTLR4?
- 27. Come ottengo le anteprime di riga nel contesto di Eclipse "Ricerca Java" intelligente (rispetto al contesto "Ricerca file")
- 28. Come si decide quando passare al contesto tra le goroutine?
- 29. Quali sono i linguaggi di programmazione per GPU
- 30. processore di contesto django
http://stackoverflow.com/questions/2929507/chomsky-hierarchy-and-programming-lingue –