Certaines langues anciennes n'ont pas de mots clés à tous, en particulier PL/1 , où
IF IF=THEN THEN BEGIN;
/* some more code */
END;
une partie du code, mais complètement illisible. (Voir aussi dans la VAE comme un exemple de l'écriture pour la plupart des langages de programmation, ce qui est complètement cryptique de lire quelques mois plus tard, même par le code d'origine de l'auteur).
Le C et le C++ langage de la famille ont un ensemble de mots-clés définis par la spécification du langage. Mais il y a très largement utilisé langues, avec des milliards de legs lignes de code source. Si vous (ou leur comité de normalisation) ajouter un nouveau mot-clé, il existe un risque de collision avec un programme existant, et comme vous l'avez deviné et les réponses des autres à ce qui est mauvais. Donc, si la norme ajouté par exemple enum_class
un nouveau mot-clé, les chances sont que quelqu'un aurait déjà utilisé comme identificateur, et que l'entité serait malheureux d'avoir à changer leur code lors de l'adoption d'une nouvelle norme C++).
Aussi en C++ est largement connu pour être peu à peu analysée (en particulier, parce que la norme en-têtes comme <vector>
sont tirant des dizaines de milliers de lignes de code source, et parce que les modules ne sont pas en C++ encore, et parce que la syntaxe est fortement ambigus), afin de complexifier l'analyseur afin de gérer de nouveaux syntaxe n'est pas une grosse affaire (l'analyse de C++ a toujours été horrible de toute façon). Par exemple, la communauté de GCC travaille beaucoup plus difficile sur de nouvelles optimisations que sur les nouvelles fonctionnalités C++ (apparemment, les caractéristiques récentes de la norme C++ de la bibliothèque nécessite beaucoup de travail et que l'analyse de la nouvelle syntaxe), même si le saut de C++03 pour le C++11 a été un grand saut et a exigé beaucoup de travail dans le C++ frontend. Cela est moins vrai pour le C++11 pour C++14 jump.
Quelques autres langues (par exemple, dans certains dialectes de Lisp comme Common Lisp et certaines Régime, où vous pouvez redéfinir un let
ou if
macro, et les macros dans homoiconic langues comme ceux-ci sont très différents, depuis l'exploitation sur les ASTs, à partir du brut textuelle de substitution de mécanisme en C ou C++...) permettent la redéfinition des mots-clés existants; lire aussi sur d'hygiène des macros. Mais cela peut rendre le code source difficile à comprendre quelques mois plus tard.