Balisage HTML de fichier source

Le balisage est utile pour présenter ses sources mais aussi vérifier la syntaxe: en mode strict en javascript on ne peut pas utiliser certains mots comme noms de variable. Donc si une variable est colorée c'est mauvais signe. https://www.w3schools.com/js/js_strict.asp Fonctionnement en mode console Chaque langage a son exécutable (.cgi sous Linux, .exe sous Windows), qui lit un fichier, le balise et envoie le HTML sur la sortie standard. Dans la liste de gauche il y a deux genres d'exécutables: * Les langages qui utilisent le même header commun, qui comporte le main. * "Page web" embarque plusieurs langages imbriqués HTML/CSS/JS/PHP. Ces exécutables peuvent être utilisés dans une console, ou un fichier batch/shell en redirigeant la sortie standard vers un fichier avec >. Fonctionnement par le web Pour faciliter le processus, un script PHP récupère la source à baliser et l'écrit dans un fichier puis crée un processus sur le CGI qui ouvre le fichier, le balise et envoie le HTML vers la sortie standard. Voir la source de ce script. Algorithme de parsing L'idée: lire la source à baliser, une seule fois, caractère par caractère. Ne faire aucun strlen() ni strdup(), une seule fois on a dit! L'algo fait subir à chaque caractère de 8 à 12 tests, selon le langage. La vitesse de parsing affichée sous le balisage est utile: d'une part elle met en évidence que le serveur de mon hébergeur tourne plus vite que ma machine de développement. De plus, elle permet de constater les améliorations dans l'algorithme: je viens de doubler la vitesse en rajoutant un seul if, ça fait plaisir, et ce sera X2 chez l'hébergeur. PHP PHP-mots.h contient quand même 1125 mots PHP, mais pas tous, il en manque mais elles sont ajoutées dès que l'occasion se présente. Javascript Après avoir ajouté un maximum de mots-clés, certains étant ajoutés à la main ou générés en Javascript (donnera un état de quelques variables sur votre navigateur; faire "voir la source" pour le code JS qui récupère les propriétés et méthodes des objets), à ce jour instructions.h et mots.h contiennent 1619 mots! (sans commentaires spéciaux, ni doublons) voir le détail: mots et objets (cette page est générée par ce fichier .c). Le baliseur Javascript compare chaque mot du fichier source à 1619 mots! Après avoir ajouté autant de mots, la vitesse de parsing en effet a chuté de 3000 à 600 octets/s. Apache Configuration Files Apache se configure par une usine de directives. Voici comment le baliseur obtient les mots à coloriser. Solution Perf Regarder la 1re lettre du mot à comparer. Si c'est un a, regarde dans la tableau qui contient tous les mots-clés commençant par a. 7 tableaux semble un bon compromis puisque la vitesse remonte à moins de 3000 o/s. Il vaut mieux comparer un mot à une liste de 200 mots plutôt que 1600. A signaler donc, si une page web contient beaucoup de Javascript et beaucoup de PHP, elle sera plus longue à baliser. Ce n'est pas un souci car ce balisage se fait en destination statique: un éditeur de texte ou un IDE ne balise pas autant de mots.