Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2499 connectés 

 



Dernière réponse
Sujet : IDE, coloration syntaxique et principe de programmation..
benou bon ben c'est tout con à faire. C'est quoi ta question exactement ?

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
benou bon ben c'est tout con à faire. C'est quoi ta question exactement ?
farib oui, masi moi je veux fair eun truc simple, et en c++ :d
 
mots clef en gras, strings, commentaires....
redant Pour faire un truc de ce genre qui tienne la route, personnelement j'utiliserais Lex&Yacc (sutout Lex en fait)
 
Lex permet de créer facilement un programme d'analyse syntaxique en donnant des mots clef et une syntaxe
farib

farib a écrit a écrit :

blague a part... z'avez pas des pties réponses pour mes deux questions ?




 
et ca :cry: :cry: :cry:

benou

farib a écrit a écrit :

 
eh, ca vous intéresse des fois :D  
 
(ps : je vois pas ce ke le vert et le caca d'oie apportent au niveau lisibilité...)




pfff les couleurs ca se configure. elle est vraiment conne ta remarque ...  
 
L'intérêt me paraît pourtant évident : tu vois immédiatement les déclarations de variables, de méthodes, les types, etc ...

farib

farib a écrit a écrit :

blague a part... z'avez pas des pties réponses pour mes deux questions ?




eh, ca vous intéresse des fois :D  
 
(ps : je vois pas ce ke le vert et le caca d'oie apportent au niveau lisibilité...)

benou

farib a écrit a écrit :

bah moi j'ai jamais utilisé emacs, et je connais que le gras des mots clefs, les commentaires, et les strings....




pauvre de toi ... ;)
 
allez, je te file un exemple : de ce que ca peut donner :  
http://perso.wanadoo.fr/vieuxbenou/divers/emacs_cc.jpg

farib blague a part... z'avez pas des pties réponses pour mes deux questions ?
schnapsmann

Code :
  1. ;;; Keyword regexp fontification functions.
  2. (defsubst font-lock-apply-highlight (highlight)
  3.   "Apply HIGHLIGHT following a match.
  4. HIGHLIGHT should be of the form MATCH-HIGHLIGHT, see `font-lock-keywords'."
  5.   (let* ((match (nth 0 highlight))
  6.  (start (match-beginning match)) (end (match-end match))
  7.  (override (nth 2 highlight)))
  8.     (cond ((not start)
  9.    ;; No match but we might not signal an error.
  10.    (or (nth 3 highlight)
  11.        (error "No match %d in highlight %S" match highlight)))
  12.   ((not override)
  13.    ;; Cannot override existing fontification.
  14.    (or (text-property-not-all start end 'face nil)
  15.        (put-text-property start end 'face (eval (nth 1 highlight)))))
  16.   ((eq override t)
  17.    ;; Override existing fontification.
  18.    (put-text-property start end 'face (eval (nth 1 highlight))))
  19.   ((eq override 'prepend)
  20.    ;; Prepend to existing fontification.
  21.    (font-lock-prepend-text-property start end 'face (eval (nth 1 highlight))))
  22.   ((eq override 'append)
  23.    ;; Append to existing fontification.
  24.    (font-lock-append-text-property start end 'face (eval (nth 1 highlight))))
  25.   ((eq override 'keep)
  26.    ;; Keep existing fontification.
  27.    (font-lock-fillin-text-property start end 'face (eval (nth 1 highlight)))))))
  28. (defsubst font-lock-fontify-anchored-keywords (keywords limit)
  29.   "Fontify according to KEYWORDS until LIMIT.
  30. KEYWORDS should be of the form MATCH-ANCHORED, see `font-lock-keywords',
  31. LIMIT can be modified by the value of its PRE-MATCH-FORM."
  32.   (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights
  33. (lead-start (match-beginning 0))
  34. ;; Evaluate PRE-MATCH-FORM.
  35. (pre-match-value (eval (nth 1 keywords))))
  36.     ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
  37.     (if (not (and (numberp pre-match-value) (> pre-match-value (point))))
  38. (setq limit (line-end-position))
  39.       (setq limit pre-match-value)
  40.       (when (and font-lock-multiline (>= limit (line-beginning-position 2)))
  41. ;; this is a multiline anchored match
  42. ;; (setq font-lock-multiline t)
  43. (put-text-property (if (= limit (line-beginning-position 2))
  44.          (1- limit)
  45.        (min lead-start (point)))
  46.      limit
  47.      'font-lock-multiline t)))
  48.     (save-match-data
  49.       ;; Find an occurrence of `matcher' before `limit'.
  50.       (while (and (< (point) limit)
  51.    (if (stringp matcher)
  52.        (re-search-forward matcher limit t)
  53.      (funcall matcher limit)))
  54. ;; Apply each highlight to this instance of `matcher'.
  55. (setq highlights lowdarks)
  56. (while highlights
  57.   (font-lock-apply-highlight (car highlights))
  58.   (setq highlights (cdr highlights)))))
  59.     ;; Evaluate POST-MATCH-FORM.
  60.     (eval (nth 2 keywords))))
  61. (defun font-lock-fontify-keywords-region (start end &optional loudly)
  62.   "Fontify according to `font-lock-keywords' between START and END.
  63. START should be at the beginning of a line."
  64.   (unless (eq (car font-lock-keywords) t)
  65.     (setq font-lock-keywords (font-lock-compile-keywords font-lock-keywords)))
  66.   (let ((case-fold-search font-lock-keywords-case-fold-search)
  67. (keywords (cdr font-lock-keywords))
  68. (bufname (buffer-name)) (count 0)
  69. keyword matcher highlights)
  70.     ;;
  71.     ;; Fontify each item in `font-lock-keywords' from `start' to `end'.
  72.     (while keywords
  73.       (if loudly (message "Fontifying %s... (regexps..%s)" bufname
  74.     (make-string (incf count) ?.)))
  75.       ;;
  76.       ;; Find an occurrence of `matcher' from `start' to `end'.
  77.       (setq keyword (car keywords) matcher (car keyword))
  78.       (goto-char start)
  79.       (while (and (< (point) end)
  80.    (if (stringp matcher)
  81.        (re-search-forward matcher end t)
  82.      (funcall matcher end)))
  83. (when (and font-lock-multiline
  84.     (>= (point)
  85.         (save-excursion (goto-char (match-beginning 0))
  86.           (forward-line 1) (point))))
  87.   ;; this is a multiline regexp match
  88.   ;; (setq font-lock-multiline t)
  89.   (put-text-property (if (= (point)
  90.        (save-excursion
  91.          (goto-char (match-beginning 0))
  92.          (forward-line 1) (point)))
  93.     (1- (point))
  94.          (match-beginning 0))
  95.        (point)
  96.        'font-lock-multiline t))
  97. ;; Apply each highlight to this instance of `matcher', which may be
  98. ;; specific highlights or more keywords anchored to `matcher'.
  99. (setq highlights (cdr keyword))
  100. (while highlights
  101.   (if (numberp (car (car highlights)))
  102.       (font-lock-apply-highlight (car highlights))
  103.     (font-lock-fontify-anchored-keywords (car highlights) end))
  104.   (setq highlights (cdr highlights))))
  105.       (setq keywords (cdr keywords)))))
  106. ;;; End of Keyword regexp fontification functions.


 
ca ressemble à ça le code de font-lock.el de emacs, si le coeur t'en dis :lol:

farib bah moi j'ai jamais utilisé emacs, et je connais que le gras des mots clefs, les commentaires, et les strings....
 
 
benou

farib a écrit a écrit :

j'ai pas dit une coloration qui gere la syntaxe du langage !
 
sinon ce serait plus une coloration




:??:
 
quand je dis "qui gere la syntaxe du langage" je veux dire, qui est capacble de colorer différemment les noms de méthodes, les variables, etc ...

farib j'ai pas dit une coloration qui gere la syntaxe du langage !
 
sinon ce serait plus une coloration
 
 
(en + je fait un stage dans la coloration chez l'oreal, alors je sais de quoi je parle :lol: :lol:)
benou ben ca dépend bcp du niveau de coloration que tu veux : si tu veux juste une coloration des mots clef, des chaines et des commentaires c'est facile. par contre si tu veux un truc méga puissant (genre emacs :D ) qui gère la syntaxe du langage, là c'est chaud !
farib vala pour "m'amuser" :D je souhaite me faire un micro- ide en c++  (mais micro)
 
 
 
je me pose des questions au niveau des principes de programmation( pas les algos) de la coloration syntaxique
 
 
1- je me fais un tableau des lignes de ma feuille de code  ( un tableau de strings-lignes )
sur lequel je travaille ?
 
 [dans le cas de c++builder je fais un TRichEdit, je travaille directement dessus  ?]
 
2- j'appelle ma "fonction de coloration" a chaque nouveau caractere appuyé ?
 
vala, je demande pas des algos, c a moi de les faire, mais juste les grandes lignes du principe

Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR