2009-04-02 9 views
5

Je recherche de bons aperçus des meilleures pratiques et des modèles courants pour activer la coloration syntaxique dans une zone de texte. Il semble être un exercice très commun presque toutes les langues ont un contrôle de l'interface utilisateur qui permet la mise en évidence de la syntaxe dans différentes langues. Je suis simplement curieux de voir s'il y a un modèle commun de mise en œuvre.Syntaxe modèle de conception de surbrillance

Est-ce que tout le monde utilise des expressions régulières? Existe-t-il un référentiel pour les expressions régulières couramment utilisées dans les scénarios de mise en évidence de la syntaxe? Y a-t-il des approches alternatives/meilleures à la coloration syntaxique?

Mise à jour

Liens vers des ressources pertinentes sur l'exécution coloration syntaxique dans une langue donnée ou concepts liés à la mise en évidence de la syntaxe serait génial. Lexing (analyse lexicale) a été soulevée dans une réponse mais sans lien pour en savoir plus. Tout ce qui peut aider à mieux comprendre ce problème communément résolu serait génial. sont sans aucun doute la première place

Lexical Analysis on Wikipedia

+0

+1 Je suis curieux d'en savoir plus ... Je pense que les regex seraient trop lents pour les gros fichiers, ou du moins ils ne fonctionneraient pas pour des choses compliquées, comme mettre en évidence uniquement les variables qui ont été définies. – mpen

Répondre

2

expressions régulières La plupart commencent à. Cependant, ils ne peuvent pas vraiment faire face à de nombreux cas rencontrés dans la plupart des langues - les textes qui ressemblent à des mots clés peuvent être des littéraux trouvés, les littéraux peuvent contenir à leur tour des délimiteurs échappés, ainsi que des caractères spéciaux. La même chose vaut pour les commentaires, etc.

Pour faire un bon travail de mise en évidence de la syntaxe, vous devez effectuer le lexage de la source - en l'analysant avec l'application d'heuristiques spécifiques au langage pour construire une liste de régions, où chaque région de la source est annoté avec comment il doit être stylé. Au fur et à mesure des modifications, vous pouvez à nouveau appliquer des règles de langage pour voir jusqu'où cette modification peut modifier la présentation d'une région. Par exemple, taper une lettre à l'intérieur d'une chaîne littérale rend la région littérale plus longue, mais en tapant une citation de fermeture tronque la région et transforme la partie restante en code, sous réserve de toutes les autres règles de lexage.

+0

Donc, je suppose que la plupart des surligneurs basés sur le Web (javascript) utilisent des expressions régulières et IDE réels sont lexique? –

+0

Probablement - bien que même avec JS, les bons éditeurs seront probablement lex. Les reg-ex, eh bien, ils se confondent parfois. Je sais que j'ai vu cela se produire dans certains éditeurs où ils pensent qu'une citation qui est échappée est en fait un délimiteur de chaîne. – levik

Questions connexes