Maison >développement back-end >C++ >La syntaxe C est-elle vraiment contextuelle ou sensible au contexte, ou quelque chose de plus puissant ?
Dévoilement de la syntaxe du C : complexités contextuelles
Le débat sur la question de savoir si le C est sans contexte ou sensible au contexte découle de la perception de « ambiguïté » dans certaines expressions. Cependant, l'ambiguïté est une caractéristique d'une grammaire spécifique, et non de la langue elle-même.
La grammaire C dépasse les limites des grammaires contextuelles et sensibles au contexte. Un analyseur Turing-complet est requis pour C , impliquant une grammaire de "Type-0", le type le plus puissant de la hiérarchie Chomsky.
Dans une grammaire de Type-0, n'importe quelle séquence de symboles peut apparaître des deux côtés de une règle de production, permettant des expressions Turing-complètes. La non-existence d'une grammaire contextuelle qui capture entièrement la syntaxe C renforce sa sensibilité au contexte.
De plus, l'instanciation du modèle C est elle-même complète de Turing, permettant le calcul dans le processus d'analyse. Cela rend C inéligible aux classifications à la fois sans contexte et sensibles au contexte.
Bien qu'une grammaire sans contexte ou sensible au contexte pour C soit théoriquement possible, sa complexité incompréhensible la rend peu pratique. Le recours à l'anglais technique et aux descriptions algorithmiques dans la norme C reflète la reconnaissance de cette indétermination syntaxique.
Au lieu d'une grammaire formelle, la norme C fournit des conseils dans l'annexe A. Cependant, elle indique explicitement que ce « résumé de la syntaxe C" est une approximation et non une définition exhaustive. Les règles de désambiguïsation, le contrôle d'accès et les règles de type sont essentiels pour filtrer les constructions syntaxiquement valides mais sémantiquement invalides.
Essentiellement, la syntaxe C transcende à la fois les frontières contextuelles et sensibles au contexte, incarnant une complexité complète de Turing qui nécessite un système grammatical plus riche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!