Je suis en train d'écrire un simple analyseur syntaxique pour le C. J'étais en train de l'exécuter avec des fichiers d'autres langages (pour le plaisir - pour voir le degré de similitude avec le C et la paresse - je ne veux pas vraiment écrire des analyseurs distincts pour chaque langage si je peux l'éviter).
Cependant, l'analyseur semble tomber en panne pour JavaScript si le code analysé contient des expressions régulières...
Cas 1 : Par exemple, en analysant l'extrait de code JavaScript,
var phone="(304)434-5454"
phone=phone.replace(/[\(\)-]/g, "")
//Returns "3044345454" (removes "(", ")", and "-")
Les "(", "[", etc. sont considérés comme des amorces de nouveaux scopes, qui ne peuvent jamais être fermés.
Cas 2 : Et, pour l'extrait de code Perl,
# Replace backslashes with two forward slashes
# Any character can be used to delimit the regex
$FILE_PATH =~ s@\\@//@g;
Le // est assorti d'un commentaire...
Comment puis-je détecter une expression régulière dans le texte du contenu d'un fichier de programme "C-like" ?