Question

J'écris un masochiste éditeur de texte open source pour Mac et ont finalement atteint le point où je veux ajouter la coloration syntaxique. J'ai des allers-retours sur diverses solutions pour les quelques jours, et je l'ai finalement décidé d'ouvrir la question à un public plus large.

Voici les options que je vois:

  • Définir les langues essentiellement par une série de correspondance de motif regex (similaire à la façon dont TextMate définit ses langues)
  • Définir les langues à grammaire formelle comme BNF ou PEG

Utilisation de correspondance de motif regex semble moins idéal car il ne peut pas représenter officiellement une langue presque aussi bien que d'une grammaire formelle; Cependant, certaines langues moins formelles auront du mal à insérer dans BNF (c.-à-Markdown - même si je sais qu'il ya un PEG mise en œuvre ).

Quelles sont les performances des compromis pour la coloration syntaxique en direct? Qu'en est-il de flexibilité pour un large éventail de langues?

Si je la route BNF, Todd Ditchendorf a créé le génial Parsekit cadre qui fonctionnerait bien hors du -boîte. Tout le monde sait de quoi que ce soit similaire pour tout? Peg

Était-ce utile?

La solution

Sauf si vous voulez combattre la bataille d'obtenir un libre contexte complet (ou pire, un contexte sensible plein) grammaire tout à fait correct pour chaque langue que vous voulez traiter (ou pire, pour tous les dialecte de la langue que vous voulez traiter ... combien de types de C ++ sont là?), aux fins de coloration syntaxique vous êtes probablement mieux renoncer à la correction complète et accepter que parfois vous » ll se tromper. Dans ce cas, les expressions régulières semblent comme une très bonne réponse. Ils peuvent aussi être très rapide, donc ils ne vont pas interférer avec la personne qui effectue le montage.

Si vous insistez pour le faire pleine vérification de la syntaxe / d'achèvement (je ne vous crois pas), alors vous aurez besoin que la grammaire complète. Vous serez également un temps très long dans la production de rédacteurs en chef pour les langues réelles.

Parfois, il est préférable de ne pas être trop sérieux. Une solution à 98% que vous pouvez obtenir est mieux qu'une solution 100% qui ne se matérialise.

Autres conseils

Il pourrait ne pas être exactement ce dont vous avez besoin puisque vous écrivez l'éditeur vous-même, mais il y a un cadre impressionnant appelé Xtext qui en fait générer un éditeur complet avec coloration syntaxique, vue contour personnalisable et auto-complétion, etc., sur la base une grammaire pour votre langue: http://eclipse.org/Xtext

En plus des problèmes d'obtenir une grammaire au travail pour une langue, il y a la complexité supplémentaire d'essayer de l'obtenir au travail pour le code qui est au milieu d'être édité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top