#1 Le 10/12/2007, à 12:52
- LittleWhite
Re : créer colaration syntaxique
Bonjour,
Je ne comprend pas exactement ce que tu veux faire. Tu veux une coloration sintaxique pour un logiciel qui ne reconnait pas encore les commandes ( genre xemacs ou autre )
Ou c'est pour un logiciel que tu crée et que tu veux faire une coloration syntaxique
( pour les éditeurs de texte la coloration se fait avec un fichier externe qui enumère les règles et leurs donnes une couleurs exemple : commande = couleur à peu de chose près c'est ça. Tu peux editer les fichiers de coloration de vi ou xemacs ou autre )
#2 Le 10/12/2007, à 12:53
- _SamSoft_
Re : créer colaration syntaxique
Un if, c'est pas top je pense plutà´t à un système de grammaire, voir du cà´té du langage C avec lex et yack mais bon je crois que c'est plutà´t pour créer un compilateur. Sinon peut être qu'il existe déjà quelque chose pour la colorisation syntaxique sous Gambas.
Ah oui, il y a aussi regex Les expressions régulières pourront peut être t'aider.
if(!physics)
/* nothing */
else
/* everything */
Hors ligne
#3 Le 10/12/2007, à 13:12
- _SamSoft_
Re : créer colaration syntaxique
Désolé, je n'y connais rien en colorisation syntaxique mais cherche "les expressions régulières" sur le net. Peut être que ca va aider.
if(!physics)
/* nothing */
else
/* everything */
Hors ligne
#4 Le 10/12/2007, à 13:30
- teke
Re : créer colaration syntaxique
Il y a un excellent IDE pour le bash : gvim couplé avec l'extension bash (d'une haute école ou université allemande).
Cela fonctionne vraiment du tonner ! et on peut encore compléter avec l'extension subversion de gvim, ainsi il y a une gestion complète du code source et de ses versions directement depuis l'éditeur !!!
#5 Le 10/12/2007, à 16:00
- LittleWhite
Re : créer colaration syntaxique
Je pense en fait ( j'espère aussi ) que l'IDE pourra faire de l'autocompletion et tout un tas d'autre truc qu'on ne peut faire avec vi ( mais si vi on peut faire de l'auto completion ).
Enfin on verra tu nous montrera.
#6 Le 10/12/2007, à 22:57
- ozak xers
Re : créer colaration syntaxique
Je suis en licence Info et j'ai eu ce semestre un module appelé "base de la compilation" un éditeur syntaxique de code étant en fait le prémisse d'un compilateur si ceci peut aider
une expression rationnelle ou une expression reguliere ...
alors ces deux choses traitent de ce qu'on appelle les automates, un automate reconnait un langage.
Un langage est composé d'un alphabet.
définition d'un alphabet :
On appelle alphabet, A, un ensemble fini non vide dont les éléments sont des symboles ou des lettres.
Alors en quoi çà répond à la question ^^
un automate peu être représenté par un graphe dans lequel tu as des états reliés par des arcs.
Le but pour ton editeur syntaxique, c'est que lorsque tu lis une chaine de caractere, tu veux savoir si c'est un mot-clé et donc s'il faut le coloré, tu passes en entrée le mot, si le mot est reconnu par l'automate alors l'automate arrive à un état de sorti, traduit niveau programmation un booleen egale a vrai par exemple et dans ce cas tu peux coloré ton mot car c'est un mot-clé.
Alors la difficulté, c'est tout d'abord de faire l'automate et çà , çà demande des notions en maths, notamment sur les ensembles. et après il faut savoir le représenter, donc avoir une structure de donnée adapté, selon mes connaissances c'est une liste de liste (du moins en C)
Mon projet du semestre prochain est de faire un éditeur syntaxique de code en java, donc d'ici là j'aurais pour sur réfléchis sérieusement à la question ^^ mais avec ceci tu as comme moi déjà quelques éléments pour réfléchir a la question.
Si tu as des questions plus précises, j'essayerai d'y répondre
Parcours le forum pour apprendre.
Hors ligne
#7 Le 11/12/2007, à 18:44
- Zoolonly
Re : créer colaration syntaxique
Les grammaires me paraisse une bonne idée de depart !
Il a aussi la lib SourceView. utiliser par GTK (je crois) et qui permet de faire exactement ce que tu veux.
Probleme : c'est du C++ !!!
Hors ligne
#8 Le 11/12/2007, à 19:52
- ozak xers
Re : créer colaration syntaxique
gambas, je connais pas du tout, je suis plutot, C,C++, java, ...
mais je vais essayer de t'aiguiller quand meme.
pour les commentaires, par exemple l'utilisateur de ton programme enregistre son programme.
donc il est stocké dans un fichier
quand tu lis ton fichier ligne par ligne
si la ligne contient le caractere spécifique au langage dénotant un commentaire, tu affiches ton texte et à partir du symbole tu colores.
en résumé :
- lecture d'une ligne du fichier
- teste si présence du caractere de commentaire
- affichage a l'ecran de cette ligne coloré à partir du symbole
après je sais pas trop comment est organisé ton programme, j'espere que çà va t'aider.
Parcours le forum pour apprendre.
Hors ligne
#9 Le 12/12/2007, à 08:15
- aleph
Re : créer colaration syntaxique
http://scintilla.org/
#10 Le 12/12/2007, à 08:27
- LittleWhite
Re : créer colaration syntaxique
J'ai pensé à un autre truc mais je crois ( qu'on me corrige si j'ai faux ) que c'est qu'en cpp ( je crois aussi que cela existe en C )
C'est une map ou une table de hashage :
A partir d'un fichier ( fichier qui enumère les mots clé et leurs couleurs : if couleur ) tu le charge en mémoire dans une map.
Après tu lit ton fichier source et à chaque mot clé tu met la couleur.
Grace à la map c'est relativement rapide
moi personnellement je le ferai bien comme cela. Mais je pense pas atteindre la coloration de xemacs
#11 Le 12/12/2007, à 12:32
- LittleWhite
Re : créer colaration syntaxique
Bon bah excuse je ne connais pas le gambas et ma solution ne fonctionne que si tu as une map ( ou une table de hashage )
Dans gambas il y en peut être ...
Ma solution : ( j'essaie d'être plus clair )
On a un fichier qui enumère tous les mots à colorer avec la couleur correspondante.
On charge le fichier dans une map.
On parcours le fichier source ( ouvert dans ton editeur ) afin de trouver les mots
( Parcours avec un pointeur on trouve une lettre interessante on continue à lire le mot mais au sinon on passe au mot suivant )
Une fois le mot trouvé on cherche dans la map la couleur correspondante.
( la map nous renvoie la couleur )
et on colorise
Linux ou mourir
Pour avoir des problemes : demarrer Windows
Script de compression multi archive : http://forum.ubuntu-fr.org/viewtopic.php?id=225297
Hors ligne
#12 Le 12/12/2007, à 20:39
- Gambix
Re : créer colaration syntaxique
Mais enfin ramis si tu t'expliquais un petit peu mieux on pourrait peut être t'aider...
Il y a un editeur dans gambas supportant une programmation externe pour la colorisation syntaxique...
il a des option préprogrammées pour le gambas par exemple mais il a aussi un mode custom pour definir soit même son language ... il y a déja un truc de fait sur le html...
L'editeur se trouve dans gb.qt.ext, et est donc spécifique a qt.
Le pire, ramis, c'est qu'il y a un exemple intégré dans la distribution de l'ide... HighLightEditor dans Exemple->controle
Hors ligne
#13 Le 12/12/2007, à 20:46
- telliam
Re : créer colaration syntaxique
pour faire une bonne coloration syntaxique d'un language, il te faudra je pense faire un parser du language, regarde du coté de lex/yacc ou bison/flex.
C'est pas super simple à aborder mais il y a pas mal d'exemple sur le net
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#14 Le 13/12/2007, à 08:55
- best_friend_fr
Re : créer colaration syntaxique
Salut,
Je ne peux quaprouver aleph.
Scintilla est un moteur d'editeur de texte, qui gere entre autre tres bien la coloration syntaxique et l'autocompletion (d'une liste predefinie, pas des variables par exemple). Il gere la coloration sur le principe de la machine a etats (automates pour les intimes) (un peu moins puissant que la grammaire, mais tellement plus facile). Tu peux ajouter d'autres parseurs pour la coloration si ceux presents ne suffisent pas.
Je peux te conseiller de regarder ca, ainsi que SciTE, l'editeur texte qui va avec.
Un mode shell existe deja.
Tu pourras peut etre ecrire une extension qui fait d'autres fonctionnalites IDE, auquel cas, cela pourrait ne pas se limiter au bash.
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#15 Le 13/12/2007, à 09:28
- best_friend_fr
Re : créer colaration syntaxique
Je ne t'ai pas dit de l'utiliser, mais de le regarder... Ca te fait des exemples.
Si tu en etais tombe amoureux, tu aurais pu contribuer au projet
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#16 Le 13/12/2007, à 10:12
- Gambix
Re : créer colaration syntaxique
ramis, parfois il faut un peu travailler aussi... je t'ai dit que cet editeur est configurable !
Mais tout comme il m'a fallus une journée pour configurer kate a faire de la colorization pour gambas, il t'en faudra pas moins pour parfaire la colorisation du bash, tu a regardé l'exemple que je t'ai cité ? noooon... on parle de gambas2 la en version RC1 ou RC2 via le svn.
C'est sur que si tu utilise encore une vielle version v1 heu la tu doit ramer un max
En effet dans la v1 l'editeur n'est pas configurable
L'écart qu'il y a entre la v1 et la v2 c'est le même qu'entre un chiwawa et un dog allemand.
Aucun rapport.
Hors ligne