Coloration syntaxique toussa

Coloration syntaxique toussa - Divers - Programmation

Marsh Posté le 17-12-2005 à 23:17:56    

Joce, dans sa grande bonté, a intégré GeSHi au forum.  
 
En clair, ça veut dire qu'il est maintenant possible de coloriser avec autre chose la coloration C/C++.
 
Pour cela, il vous suffit d'utiliser  

[code=nomdulangage]


(nb: "cpp" pour le C++ et "csharp" pour le C#, comme noms de langages)
 
Une dizaine de langages sont gérés, dont C et C++, Java, C#, Python, Ruby, Vb et autres PHP ou ASM x86.
 
Problème, les couleurs sont actuellement à chier (genre les chaînes de caractère en rouge, les parenthèses en vert quipète, toussa).
 
Il faut donc proposer à Joce un autre schéma de couleurs, je vous donne donc le choix entre 3 thèmes par défaut d'éditeurs relativement connus: Visual Studio, code:blocks et SciTE
 
 
SciTE:
http://img461.imageshack.us/img461/1977/scite2ac.th.png
 
code:blocks:
http://img461.imageshack.us/img461/7058/codeblocks7mm.th.png
 
Visual Studio:
http://img461.imageshack.us/img461/2011/visual0yd.th.png
 
Exemples de coloration actuelle:
 
C

Code :
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {      
  5.        int b;
  6.        
  7.        for (b = 99; b >= 0; b--) {
  8.                switch (b) {
  9.                case 0:
  10.                        printf("No more bottles of beer on the wall, no more bottles of beer.\n" );
  11.                        printf("Go to the store and buy some more, 99 bottles of beer on the
  12. wall.\n" );
  13.                        break;
  14.                case 1:
  15.                        printf("1 bottle of beer on the wall, 1 bottle of beer.\n" );
  16.                        printf("Take one down and pass it around, no more bottles of beer on the
  17. wall\n" );
  18.                        break;
  19.                default:
  20.                        printf("%d bottles of beer on the wall, %d bottles of beer.\n", b, b);    
  21.                                   printf("Take one down and pass it around, %d %s of beer on the
  22. wall.\n"
  23.                                ,b - 1
  24.                                ,((b - 1) > 1)? "bottles" : "bottle" );
  25.                        break;
  26.                }
  27.        }      
  28.        
  29.        return 0;
  30. }


 
C++

Code :
  1. // C++ version of 99 Bottles of Beer, object oriented paradigm
  2. // programmer: Tim Robinson timtroyr@ionet.net
  3. #include <fstream.h>
  4.  
  5. enum Bottle { BeerBottle };
  6.  
  7. class Shelf {
  8.    unsigned BottlesLeft;
  9. public:
  10.    Shelf( unsigned bottlesbought )
  11.        : BottlesLeft( bottlesbought )
  12.        {}
  13.    void TakeOneDown()
  14.        {
  15.        if (!BottlesLeft)
  16.            throw BeerBottle;
  17.        BottlesLeft--;
  18.        }
  19.    operator int () { return BottlesLeft; }
  20.    };
  21.  
  22. int main( int, char ** )
  23.    {
  24.    Shelf Beer(99);
  25.    try {
  26.        for (;;) {
  27.            char *plural = (int)Beer !=1 ? "s" : "";
  28.            cout << (int)Beer << " bottle" << plural
  29.                 << " of beer on the wall," << endl;
  30.            cout << (int)Beer << " bottle" << plural
  31.                 << " of beer," << endl;
  32.            Beer.TakeOneDown();
  33.            cout << "Take one down, pass it around," << endl;
  34.            plural = (int)Beer !=1 ? "s":"";
  35.            cout << (int)Beer << " bottle" << plural
  36.                 << " of beer on the wall." << endl;
  37.            }
  38.        }
  39.    catch ( Bottle ) {
  40.        cout << "Go to the store and buy some more," << endl;
  41.        cout << "99 bottles of beer on the wall." << endl;
  42.        }
  43.    return 0;
  44.    }


 
C#

Code :
  1. // Simplistic, yet working C# sample
  2. // Author: Mark Hurley    (markph@mailcan.com)
  3. // May 30, 2005
  4.  
  5. using System;
  6.  
  7. namespace NinetyNineBottlesOfBeer
  8. {
  9.     /// <summary>
  10.     /// Infamous 99 bottles of beer song in C#.Net
  11.     /// </summary>
  12.     class NinetyNineBottlesOfBeerSong
  13.     {
  14.         /// <summary>
  15.         /// beer verse more beer left
  16.         /// </summary>
  17.         private const string BEER_LYRICS_MORE = @"
  18. {0} bottle{1} of beer on the wall,
  19. {0} bottle{1} of beer.
  20. Take one down, pass it around,
  21. {2} bottle{3} of beer on the wall.";
  22.  
  23.         /// <summary>
  24.         /// beer verse no more beer left
  25.         /// </summary>
  26.         private const string BEER_LYRICS_NONE = @"
  27. {0} bottle{1} of beer on the wall,
  28. {0} bottle{1} of beer.
  29. Take one down, pass it around,
  30. No more bottles of beer on the wall.";
  31.  
  32.         /// <summary>
  33.         /// Determine the proper verse, then merge it with <c>count</c>.
  34.         /// </summary>
  35.         /// <param name="count">Number of bottles remaining.</param>
  36.         /// <returns>Properly formated string verse for song.</returns>
  37.         public string Sing(int count)
  38.         {
  39.             string tmp = "";
  40.             if (count == 1)
  41.                 return string.Format(BEER_LYRICS_NONE,
  42.                     count,
  43.                     (count==1) ? "" : "s" );
  44.             else if (count > 0)
  45.                 return string.Format(BEER_LYRICS_MORE,
  46.                     count,
  47.                     (count==1) ? "" : "s",
  48.                     (count-1),
  49.                     ((count-1)==1) ? "" : "s" );
  50.             else
  51.                 tmp = "";
  52.  
  53.             return tmp;
  54.         }
  55.  
  56.         [STAThread]
  57.         static void Main(string[] args)
  58.         {
  59.             NinetyNineBottlesOfBeerSong song = new NinetyNineBottlesOfBeerSong();
  60.  
  61.             for(int i=99; i>0; i--)
  62.             {
  63.                 Console.WriteLine(song.Sing(i));
  64.                 Console.ReadLine();
  65.             }
  66.         }
  67.     }
  68. }


 
Java:

Code :
  1. // java version of 99 bottles of beer on the wall
  2. // 1995 Sean Russell (ser@cs.uoregon.edu)
  3.  
  4. class bottles
  5. {
  6.  public static void main(String args[])
  7.    {
  8.    String s = "s";
  9.    for (int beers=99; beers>-1;)
  10.      {
  11.      System.out.print(beers + " bottle" + s + " of beer on the wall, " );
  12.      System.out.println(beers + " bottle" + s + " of beer, " );
  13.      if (beers==0)
  14.        {
  15.        System.out.print("Go to the store, buy some more, " );
  16.        System.out.println("99 bottles of beer on the wall.\n" );
  17.        System.exit(0);
  18.        }
  19.      else
  20.        System.out.print("Take one down, pass it around, " );
  21.      s = (--beers == 1)?"":"s";
  22.      System.out.println(beers + " bottle" + s + " of beer on the wall.\n" );
  23.      }
  24.    }
  25. }


 
Python:

Code :
  1. #!/usr/local/bin/python
  2. #   python version of 99 bottles of beer, compact edition
  3. #   by Fredrik Lundh (fredrik_lundh@ivab.se)
  4.  
  5. def bottle(n):
  6.    try:
  7.        return { 0: "no more bottles",
  8.                 1: "1 bottle"} [n] + " of beer"
  9.    except KeyError: return "%d bottles of beer" % n
  10.  
  11. for i in range(99, 0, -1):
  12.    b1, b0 = bottle(i), bottle(i-1)
  13.    print "%(b1)s on the wall, %(b1)s,\n"\
  14.       "take one down, pass it around,\n"\
  15.       "%(b0)s on the wall." % locals()


 
Ruby:

Code :
  1. #!/usr/bin/env ruby
  2. # 99 bottles problem in Ruby
  3.  
  4. class Wall
  5.  
  6.  def initialize(num_of_bottles)
  7.    @bottles = num_of_bottles
  8.  end
  9.  
  10.  def sing_verse
  11.    @output = sing_num(@bottles) + " on the wall, " + sing_num(@bottles) + "\n"
  12.    @output += "take one down, pass it around, " + sing_num(@bottles-1) + "\n\n"
  13.    return @output
  14.  end
  15.  
  16.  def sing_all
  17.    @output = ''
  18.    while @bottles > 0 do
  19.      @output += sing_verse()
  20.      @bottles -= 1
  21.    end
  22.    return @output
  23.  end
  24.  
  25.  def sing_num(num)
  26.    @counter = (num > 1) ? 'bottles' : 'bottle'
  27.    "#{num} #{@counter} of beer"
  28.  end
  29.  
  30. end # class Wall
  31.  
  32. wall = Wall.new(99)
  33. puts wall.sing_all()


Message édité par masklinn le 17-12-2005 à 23:21:28

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2005 à 23:17:56   

Reply

Marsh Posté le 17-12-2005 à 23:21:03    

a voté :o

Reply

Marsh Posté le 17-12-2005 à 23:25:22    

VS a gagné.  
Fin du vote.
merci

Reply

Marsh Posté le 17-12-2005 à 23:28:19    

Ça manque de couleurs VS :o
 
Ceci dit les couleurs actuelles sont pas mauvaises, à part le rose flashy et les parenthèses qui mériteraient un vert un peu plus sombre...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 17-12-2005 à 23:29:17    

elle est ou la coloration dans VS (à part quelques mot clés en bleu) ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 17-12-2005 à 23:29:58    

C'est dans la simplicité que se trouve la lisibilité, le code n'est pas un sapin de noel

Reply

Marsh Posté le 17-12-2005 à 23:31:30    

Perso j'aime mieux celles de Borland :o (mots-clé en gras et en noir, plutôt que ce bleu)
Mais j'ai pas Builder installé ici donc je peux pas faire de screenshot. Ce que j'aime pas dans les couleurs de VS c'est en effet que ça manque de couleur : les chaînes et les nombres devraient être colorées.
 
Joce, pour le Pascal/Delphi, comment je peux fournir de meilleures couleurs et une gestion plus Borlandienne des mots-clé ? :o Tu peux me passer un fichier que je te renvoie ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-12-2005 à 23:34:17    

gm_superstar a écrit :

Ça manque de couleurs VS :o
 
Ceci dit les couleurs actuelles sont pas mauvaises, à part le rose flashy et les parenthèses qui mériteraient un vert un peu plus sombre...


J'ai pris un VS.Net 2003 non tiouné, j'y peux rien si c'est pas bon :o

antp a écrit :

Perso j'aime mieux celles de Borland :o (mots-clé en gras et en noir, plutôt que ce bleu)
Mais j'ai pas Builder installé ici donc je peux pas faire de screenshot. Ce que j'aime pas dans les couleurs de VS c'est en effet que ça manque de couleur : les chaînes et les nombres devraient être colorées.
 
Joce, pour le Pascal/Delphi, comment je peux fournir de meilleures couleurs et une gestion plus Borlandienne des mots-clé ? :o Tu peux me passer un fichier que je te renvoie ?


Il a mis les types qu'il pouvait coloriser dans blabla, après faut savoir si il peut faire des couleurs différentes en fonction du langage :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2005 à 23:36:47    

Le Pascal/Delphi est colorisé, mais de manière un peu bizarre, c'est pour ça que je proposais de modifier le truc.
 

Code :
  1. function Bidule(const Param: Integer): string;
  2. begin
  3.  Result := IntToStr(Param + 50) + 'abcd';
  4. end;


 
function, const et string sont tous les trois des mots-clé du langage, et ils sont dans trois couleurs différentes.  
Integer n'a pas à être colorié, c'est un identifiant comme les autres (les types prédéfinis ont le même statut que les types définis par l'utilisateur).
IntToStr est une fonction "classique" mais n'aurait pas à être coloriée je pense...


Message édité par antp le 17-12-2005 à 23:40:46

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-12-2005 à 23:37:26    

masklinn a écrit :

J'ai pris un VS.Net 2003 non tiouné, j'y peux rien si c'est pas bon :o


D'aucuns prétenderaient que tu tentes d'influencer le résultat du vote :o


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 17-12-2005 à 23:37:26   

Reply

Marsh Posté le 17-12-2005 à 23:39:02    

les couleurs de 2005 sont très bien, donc comme dit bk, on arrète là le sondage et on donne VS gagnant :o
http://img120.imageshack.us/img120/9744/20050pz.th.png

Reply

Marsh Posté le 17-12-2005 à 23:40:24    

gm_superstar a écrit :

D'aucuns prétenderaient que tu tentes d'influencer le résultat du vote :o


Même pas [:moule_bite]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2005 à 23:41:05    

Quelqu'un qui appelle son fichier mzin.cpp ne peut pas être crédible


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 17-12-2005 à 23:42:01    

Reply

Marsh Posté le 17-12-2005 à 23:43:06    

voici les couleurs de context...
 
http://img373.imageshack.us/img373/8589/context0ow.th.png
 


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 17-12-2005 à 23:44:03    

c'est moche

Reply

Marsh Posté le 17-12-2005 à 23:44:36    

Reply

Marsh Posté le 17-12-2005 à 23:45:38    

mauvais

Reply

Marsh Posté le 17-12-2005 à 23:46:46    

J'ai voté SciTE. Code::Blocks, c'est pas mal mais :
 - la colorisation doit aider à la compréhension mais pas distraire l'oeil, donc trop de couleur nuit,
 - c'est pas raisonnable de demander à joce de colorier les parenthèses et les symboles. L'intérêt est limité, ça augmente le nombre de bugs et ça ralentit le forum.
En fait, ce que je n'aime pas dans les couleurs actuelles, c'est les mots-clé en kaki, et le rouge qui claque. Les mots clés en gras noir ou bleu marine, c'est bien. :)

Message cité 2 fois
Message édité par el muchacho le 17-12-2005 à 23:48:50
Reply

Marsh Posté le 17-12-2005 à 23:47:21    

de toute facon chrisbk il a décidé que tout ce que je disait c'était mal [:spamafote]


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 17-12-2005 à 23:49:12    

el muchacho a écrit :

- c'est pas raisonnable de demander à joce de colorier les parenthèses et les symboles. L'intérêt est limité, ça augmente le nombre de bugs et ça ralentit le forum.


Non mais ça c'est un script tout fait qui le fait déjà... Là, la question c'est juste choisir les couleurs dans les CSS.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 17-12-2005 à 23:50:38    

KangOl a écrit :

de toute facon chrisbk il a décidé que tout ce que je disait c'était mal [:spamafote]


Surtout que ce sont les mêmes couleurs que VS2005 du screenshot d'Harko, mais bk n'en est pas à une mauvaise fois près. :D

Reply

Marsh Posté le 17-12-2005 à 23:51:18    

nan attends melange pas tout, les guignoleries sur le fait que i++ aille plus vite que ++i parce que le compilo "n'a pas a faire une variable intermediaire", alors que ladite incrementation n'est meme pas en milieu d'expression, je dis clairement non non et non
 
D'ailleurs, pour ta gouverne, observe bien le code (C++ et son disassembly release) suivant :

Code :
  1. for (int i=0;i<50000;i++)
  2. 00401331  mov         esi,0C350h
  3. 00401336  jmp         main+10h (401340h)
  4. 00401338  lea         esp,[esp]
  5. 0040133F  nop             
  6.  std::cout<<"yop";
  7. 00401340  push        offset string "yop" (41111Ch)
  8. 00401345  push        offset std::cout (419510h)
  9. 0040134A  call        std::operator<<<std::char_traits<char> > (4010B0h)
  10. 0040134F  add         esp,8
  11. 00401352  dec         esi 
  12. 00401353  jne         main+10h (401340h)


 
edifiant n'est ce pas ?  La ligne 00401352   est des plus interessante

Message cité 1 fois
Message édité par chrisbk le 17-12-2005 à 23:52:05
Reply

Marsh Posté le 17-12-2005 à 23:52:01    

gm_superstar a écrit :

Non mais ça c'est un script tout fait qui le fait déjà... Là, la question c'est juste choisir les couleurs dans les CSS.


Ah ouais, j'avais pas vu que les symboles étaient déjà colorisés. C'est un truc qu'il a fait ou qu'il a pêché ailleurs ??

Reply

Marsh Posté le 17-12-2005 à 23:52:09    

pour ce qui est personnalisable : http://qbnz.com/highlighter/geshi- [...] ile-styles


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 17-12-2005 à 23:52:22    

el muchacho a écrit :

Ah ouais, j'avais pas vu que les symboles étaient déjà colorisés. C'est un truc qu'il a fait ou qu'il a pêché ailleurs ??


 
faut lire le premier post [:el g]

Reply

Marsh Posté le 17-12-2005 à 23:52:40    

gm_superstar a écrit :

Quelqu'un qui appelle son fichier mzin.cpp ne peut pas être crédible


[:petrus dei]

el muchacho a écrit :

- c'est pas raisonnable de demander à joce de colorier les parenthèses et les symboles. L'intérêt est limité, ça augmente le nombre de bugs et ça ralentit le forum.


Ué enfin

  • SciTE les met en noir gras (code:blocks utilise Scintilla, c'est juste le schéma de coloration qui change)
  • Joce a juste accroché Geshi au forum, et geshi gère la coloration de ces conneries


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2005 à 23:53:54    

chrisbk a écrit :

nan attends melange pas tout, les guignoleries sur le fait que i++ aille plus vite que ++i parce que le compilo "n'a pas a faire une variable intermediaire", alors que ladite incrementation n'est meme pas en milieu d'expression, je dis clairement non non et non
 
D'ailleurs, pour ta gouverne, observe bien le code (C++ et son disassembly release) suivant :

Code :
  1. for (int i=0;i<50000;i++)
  2. 00401331  mov         esi,0C350h
  3. 00401336  jmp         main+10h (401340h)
  4. 00401338  lea         esp,[esp]
  5. 0040133F  nop             
  6.  std::cout<<"yop";
  7. 00401340  push        offset string "yop" (41111Ch)
  8. 00401345  push        offset std::cout (419510h)
  9. 0040134A  call        std::operator<<<std::char_traits<char> > (4010B0h)
  10. 0040134F  add         esp,8
  11. 00401352  dec         esi 
  12. 00401353  jne         main+10h (401340h)


 
edifiant n'est ce pas ?  La ligne 00401352   est des plus interessante


 
bk, ou l'art de taper là où ça fait mal [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-12-2005 à 23:54:45    

Reply

Marsh Posté le 17-12-2005 à 23:55:16    

Harkonnen a écrit :

bk, ou l'art de taper là où ça fait mal [:ddr555]


 
nan bin nan, sinon il allait m'en tenir rancune [:el g] avant de parler sur "le compilo fait ci ou fait ca", fo un peu savoir ce que fait un compilo, quoi
 
 
(sinon jme demande bien c'est quoi, ce nop)

Message cité 1 fois
Message édité par chrisbk le 17-12-2005 à 23:55:45
Reply

Marsh Posté le 17-12-2005 à 23:56:13    

gm_superstar a écrit :

c'était pour harko, cf son screenshot :o


Ah oké :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-12-2005 à 23:57:16    

chrisbk a écrit :


(sinon jme demande bien c'est quoi, ce nop)


à mon avis, il doit être là pour des raisons d'alignement


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-12-2005 à 23:57:24    

bon j'abandonne pour ce coup :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 17-12-2005 à 23:57:55    

ouais je vois que ca [:god] j'aime bien l'inversion de boucle et le non-test du premier tour [:god]

Reply

Marsh Posté le 17-12-2005 à 23:58:05    

chrisbk a écrit :

faut lire le premier post [:el g]


[:petrus75]

Reply

Marsh Posté le 17-12-2005 à 23:58:12    

Test, ne pas lire
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  4.  <head>
  5.    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
  6.    <title>La FAQ blabla@Prog</title>
  7.  </head>
  8.  <body> </body>
  9. </html>


 
[:sisicaivrai] ça marche pas

Message cité 2 fois
Message édité par gm_superstar le 17-12-2005 à 23:59:50

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 17-12-2005 à 23:58:21    

KangOl a écrit :

bon j'abandonne pour ce coup :o


 
il ne s'agit pas d'abandonner, il s'agit de comprendre [:el g]

Reply

Marsh Posté le 17-12-2005 à 23:58:27    

gm_superstar a écrit :

c'était pour harko, cf son screenshot :o


oué bon, ça va :o
essayez de taper correctement avec une attelle qui relie l'index et le majeur [:pingouino]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-12-2005 à 00:00:08    

chrisbk a écrit :

ouais je vois que ca [:god] j'aime bien l'inversion de boucle et le non-test du premier tour [:god]


Ca donne quoi si la limite est une variable rentrée par l'utilisateur et non une constante?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 18-12-2005 à 00:02:35    

masklinn a écrit :

Ca donne quoi si la limite est une variable rentrée par l'utilisateur et non une constante?


 
bin y rajoute le test [:petrus75]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed