Pourquoi l’parsingur C n’autorise-t-il pas les espaces entre les chiffres d’un littéral entier?

Je pense que cela briserait une autre parsing, mais cela ne vient pas immédiatement à l’esprit …

Par exemple, si je dis ceci:

#include  int main() { int i = 10 000; printf("%d\n", i); return 0; } 

Mon compilateur dit ceci:

 ctest.c:5: error: expected ',' or ';' before numeric constant 

Je pense que ce serait une fonctionnalité, c’est-à-dire qu’il est plus facile d’parsingr les grands nombres entiers avec des milliers de séparateurs. J’utilise un GCC récent et je suppose que c’est le cas pour les autres compilateurs / parsingurs / lexers; quel que soit l’object.

Le langage ne le permet pas (un littéral entier est un jeton, les espaces intermédiaires le divisent en deux jetons), mais l’expression de l’initialiseur est généralement considérée comme un calcul de littéraux:

 int i = 10 * 1000; /* ten thousand */ 

Cela entrerait en conflit avec la possibilité de surcharger l’opérateur spatial proposé pour c ++.

(Oui, je sais que ce n’est pas une proposition sérieuse).

EDIT: C’était juste une chose stupide ci-dessus, mon vrai commentaire est la partie ci-dessous

Pour moi, la possibilité de chiffrer les espaces blancs améliorerait et réduirait la lisibilité. Si vous devez lire les chiffres eux-mêmes, cela vous facilitera probablement la tâche. Mais je pense que cela ralentirait également la lecture du code car vous auriez à faire une étape supplémentaire en analysant le code dans votre tête plutôt que de regarder uniquement la fin du jeton. En supposant que vous ne soyez pas intéressé par la valeur réelle d’un nombre lors de sa lecture.

Je ne crois pas qu’il y ait une raison technique pour que cela ne puisse pas être fait, c’est plutôt que les gens voient un nombre comme un simple jeton indivisible, il devrait donc être écrit comme ça. Je dois dire que je ne sais pas exactement pourquoi, mais cela m’énerverait de voir des chiffres ainsi divisés dans le code. Je ne peux pas dire qu’il y a une bonne raison à cela, mais c’est toujours vrai 🙂 C’est probablement ce à quoi je suis habitué.