Une classe de coloration syntaxique multilangage

Soyez le premier à donner votre avis sur cette source.

Vue 16 175 fois - Téléchargée 1 743 fois

Description

Que dire à part que cette classe permet d'afficher en couleur un code source.

Le principe :

Chaque langage possède une grammaire qui lui est propre. Elle est constituée de mots clés, d'expressions permettant de définir une zone comme commentaire, chaîne de caractères, etc...
La classe que je vous fournis ici, permet de mettre en surbrillance 3 langages : C#, VB(.net) et XML/HTML.

Vous pourrez vous-mêmes ajouter vos propres langages en ajoutant les caractéristiques de votre langage dans le fichier XML joint.

La classe produit une fichier XML résultant du parsing du code source et qui peut être transformé par XLST dans d'autres formats, par exemple, j'ai joint 2 fichiers qui vous permettront de transformer ce fichier XML en HTML ou en RTF.

L'exemple est clair.

Bon coding ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
28 -
Wow, pas facile à faire ce genre de parser j'imagine, et en plus c'est extensible ! Est ce que c'est possible de rendre la coloration syntaxique "on the fly" avec de bonnes performances ?
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
Non, ce n'est pas assez performant dans l'état.
J'essayerai de publier une source qui fait ca prochainement.
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
38 -
Cool, pas mal comme source...
Juste une petite remarque (pas importante, mais je le dis quand même) : si on colorise et que la richtextBox est vide, ça fait planter le programme ;-)
t_barbillon
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
1 -
Dommage pour le mode "on the fly", sinon Très Très Bien.
cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
Hello :)

Avant tout merci pour cette source.

---------------------------

Je PRECISE à tout le monde que la coloration ne se fait pas en live,
il faut clicquer sur un bouton pour la raffraichir.

---------------------------

Une petite CRITIQUE perso :

j'utilise ton code pour colorer du xml que je génère (debug).
Le top aurait été d'avoir le code du highlighter dans une lib.

Ainsi on aurait pu le prendre directement dans notre projet.
et DEUX ligne de code :
une pour wrapper un RichTextBox que l'on crée sur une form
une autre pour colorer le texte dans le richtextbox.

---------------------------

Une petite ERREUR :

Dans le fichier "langageDefinition.xml",
les définitions pour le xml sont correctes mais ne marche pas.
La règle :
<Rule type="Commentaire" expression="<!--[\s\W\d\w]*?-->" />
ne fonctionne pas car la règle
<Rule type="Delimiter" expression="(</??)|(/??>)" />
prend le pas sur elle.

<!-- --> Le premier chevron est matché par la regle "Delimiter"
et ainsi le reste ne peut pas matcher "Commentaire".

J'ai pas regardé comment était géré ton code car je n'ai pas pas trop le temps.
Il faudrait donner la priorité à la règle qui mange le plus de texte,
ce qui est le bon choix dans la majorité des problèmes de ce type (conflit entre deux règles).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.