"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > La syntaxe C ++ est-elle sans contexte ou dépendante du contexte, ou quelque chose de plus puissant?

La syntaxe C ++ est-elle sans contexte ou dépendante du contexte, ou quelque chose de plus puissant?

Publié le 2025-04-30
Parcourir:582

Is C   Syntax Truly Context-Free or Context-Sensitive, or Something More Powerful?

dévoiler la syntaxe de C: complexités contextuelles

le débat sur la question de savoir si C est sans contexte ou sensible au contexte provient de la perception de "l'ambiguïté" dans certaines expressions. Cependant, l'ambiguïté est une caractéristique d'une grammaire spécifique, pas le langage lui-même.

C grammaire dépasse les limites des grammaires sans contexte et sensibles au contexte. Un analyseur de Turing-Complete est requis pour C, impliquant une grammaire "Type-0", le type le plus puissant de la hiérarchie Chomsky.

Dans une grammaire de type-0, toute séquence de symboles peut apparaître des deux côtés d'une règle de production, permettant des expressions de Turing-Complete. La non-existence d'une grammaire contextuelle qui capture pleinement la syntaxe C renforce sa sensibilité contextuelle.

De plus, l'instanciation du modèle C est elle-même Turing-Complete, permettant un calcul dans le processus d'analyse. Cela rend C inéligible pour les classifications 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 le rend peu pratique. La dépendance à l'égard de l'anglais technique et des 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, il indique explicitement. Les règles de désambiguïsation, le contrôle d'accès et les règles de type sont essentielles pour filtrer les constructions syntaxiquement valides mais sémantiquement invalides.

Essentiellement, la syntaxe C transcende à la fois des limites sans contexte et de contextes, incarnant une complexité de l'achèvement de Turing qui nécessite un système grammatical plus riche.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3