
| Page 1 2 Suivante | |||||||||||||||
| Auteur | Message | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||||||||||||||
| Page 1 2 Suivante | |||||||||||||||
shareman
|
# Posté le 24/09/2009 à 21:48:46 | ||||||||||||||
charlotte <3![]()
Ville : Mertzwiller |
Bonjour à tous !
À travers ce topic co-écrit avec GuilOooo, c'est encore un nouvel atelier qui s'ouvre sur le forum "Autres langages". Celui-ci est un peu particulier, dans le sens où ce n'est pas un exercice de programmation très courant qui vous sera proposé. Cet atelier se veut donc plutôt singulier, et en même temps ludique (on l'espère ;)) et enrichissant. Avant la présentation du sujet, encore quelques mots. Comme toujours, c'est un atelier, ça doit donc être divertissant et apporter quelque chose à tout le monde. N'hésitez donc pas à poster vos propositions de code, à commenter celles des autres (ssi. vous vous en sentez capable), ou à poser des questions si quelque chose vous échappe ; il y aura toujours quelqu'un pour y répondre ! Et encore une fois comme toujours, il n'y aura pas de correction, pas de classement, pas de gagnant, pas de récompense. Juste des discussions passionnantes autour de codes qui le seront tout autant (enfin ça, on l'espère ).Thème : mini-préprocesseur pour langage CLe but du jeu, aujourd'hui, va être de coder un mini-préprocesseur pour le langage C. Il s'agit d'un programme qui lit un texte, et interprète certains mots (qu'on nomme des *directives*) comme « #define » ou « #include » et à partir de ces directives interprétées, fournissant en sortie un autre texte, sans ces directives mais avec tous les changements nécessaires. Mais soyons clair : Le but n'est pas de coder un préprocesseur complet, qui exécute toutes les directives prévues par le langage C, mais seulement quelques unes (enfin, vous pouvez toujours faire plus :p), le but n'étant pas d'envisager une distribution de votre chef d'œuvre mais de s'entraîner. Pour ceux qui ne voient absolument pas ce que signifie "préprocesseur pour langage C" ou (inclusif) qui ne savent plus du tout en quoi consiste son rôle, deux liens : first and last. Bon, vous êtes maintenant en droit de vous demander : À quoi cela va-t-il me servir ? Question stupide pour les uns, parfaitement légitime pour les autres. En réalité, cet exercice se veut comme dit "enrichissant", c'est à dire que non seulement il vous fait bosser vos connaissances sur le rôle d'un préprocesseur, mais en plus, il va vous permettre de vous familiariser avec des techniques de programmation fondamentales (analyse lexicale et syntaxique, recherche de sous-chaînes, etc.). Plus ambitieux encore : vous faire découvrir de nouvelles techniques. Pour en revenir à l'exercice, deux détails qui ont leur importance (ou pas) : - Il sera inutile de se focaliser sur les entrées / sorties (mais si vous tenez à faire un truc parfait à ce niveau, libre à vous comme toujours) : le but n'est pas ici de coder une GUI ou de faire une entrée hyper-sécurisée. Si vous avez du mal à vous en sortir avec ce genre de chose, vous pouvez même écrire le code à interpréter en dur dans votre source ; - Même si, à première vue, vous pourriez être tentés de faire un programme qui modifie le fichier initial au fur et à mesure qu'il interprète les commandes, nous vous conseillons plutôt de séparer l'entrée de la sortie. Quelques directives importantesCode : C - les inclusions de fichiers
Cette directive du langage C, qui est d'ailleurs sans doute la plus connue, sert à inclure un fichier dans le fichier courant. Vous allez donc devoir copier le contenu du fichier spécifié dans la sortie. Trois points sur lesquels il faudra être vigilant : - Il y a une différence entre <> et "". Je vous ai donné deux liens plus haut, la réponse y est ;- Le fichier inclue doit lui aussi passer par votre préprocesseur avant de l'inclure à proprement parler ; - Le chemin du fichier spécifié peut être un chemin absolu ou relatif. Si le fichier n'existe pas, on arrête l'analyse et on indique une erreur (et comme tout bon programme, en donnant le maximum de détails sur cette erreur). Code : C - les définitions
Sans doute la directive la plus connue après #include, la #define. Pour ne pas vous emmêler les pinceaux, nous allons séparer trois aspects de cette directive (les trois "formes" que vous pouvez voir dans le code du dessus) : - la #define simple, qui définit juste un mot ("définir" ici ne veut rien dire de particulier, le préprocesseur doit juste se souvenir qu'il a définit ce mot) - la #define qui sert à remplacer un mot (le mot #definé) par un texte. Si votre programme rencontre une ligne comme la ligne 2 du code plus haut, il doit se souvenir qu'à chaque occurrence du mot "TXT" dans votre texte, il doit écrire "BLABLA HAHA" dans la sortie, à la place de "TXT". Cette forme de la #define a donc un rôle de substitution de texte. - la macro. Plus chaud à implémenter (encore une fois, ou pas). La macro agit comme la deuxième forme de #define que nous avons vu mais prend des paramètres. Ces paramètres peuvent être du texte totalement quelconque. Dans la définition de la macro, ces textes paramétriques sont désignés par des identifiants. Lors de la substitution de texte, ces identifiants sont remplacés par les textes passés en paramètre à la macro lors de son "appel". À titre d'exemple : devra résulter d'un "appel" à "TXT(tralala, ceci est un exemple)" le texte suivant : "BLABLA tralala HAHA ceci est un exemple". Il existe des opérateurs que l'on peut appeler dans la définition d'une macro : # et ##. # ajoute les guillemets autour d'un texte et ## concatène deux textes. Pour plus de détails, il y a les liens plus haut ;). Code : C - l'annulation d'une définition
Très simplement : cette instruction demande au préprocesseur d' "oublier" que TXT a été #definé. Code : C - les structures conditionnelles
Les structures conditionnelles (enfin une partie d'entre-elles) du préprocesseur C. #ifdef TXT imprime le texte suivant cette directive (jusqu'au prochain #else ou #endif correspondant) si et seulement si TXT a été #definé préalablement. #ifndef TXT fonctionne exactement sous le même principe, sauf qu'on imprimera le texte si et seulement si TXT n'a pas été #definé préalablement. #else exprime un "sinon" (je pense que vous comprennez maintenant comment ça va marcher) ; et #endif doit finir toute structure conditionnelle. Voilà. Ici, il y a que quelques directives, il s'agit en fait des plus importants (sans dire que d'autres ne sont pas importants). Essayez déjà de voir ce que vous pouvez gérer de tout ça avant d'aller plus loin, mais n'hésitez pas non plus à vous lancer des défis à vous-mêmes (ou pourquoi pas entre-vous, participants) :p. Deux petits détails supplémentaires que je n'ai pas réussi à caser avant : - Il n'y a pas de notion de portée ! - Les noms des #define doivent utiliser exactement le même alphabet que les noms de variables en C. Vous êtes encore là ?Nous insistons encore : allez à votre rythme. Vous n'êtes pas obligés de tout faire pour pouvoir poster, vous pouvez vous contenter de poser des questions, ou même poster votre code à différentes étapes de sa fabrication (c'est d'ailleurs très judicieux comme procédé, le risque de se planter totalement est moins important). Dernier point important : vu que nous sommes ici pour coder et critiquer du code, on veut du *code*. Si vous postez un exécutable, il risque d'être ignoré car personne n'aura rien à dire dessus (ou sinon "ouais ça marche, super") ! De plus, on préfère avoir votre code ici, même s'il est long. Vous pouvez utiliser la balise secret pour le cacher s'il gênerait la navigation, ou au pire des cas pastebin ou pocoo pour l'uploader. Dans les autres cas, lorsque quelqu'un lira le sujet, dans longtemps, il ne retrouvera peut-être plus vos œuvres, ce serait dommage .On veut du code certes, mais aussi du code intéressant. Si vous postez un code identique aux trois précédents, comprenez que ce n'est pas très intéressant pour les autres. Ce n'est pas une contrainte (loin de là), mais cherchez aussi à innover, faire "autrement" que les autres, optimiser les codes des autres éventuellement. Bon atelier à tous ! PS : Exemple "avant preproc, après preproc".
Édité
le 26/09/2009 à 19:37:21
par shareman
Nouvel atelier : Codez votre propre petit préprocesseur pour langage C ! Citation : Woody Allen Si l'au-delà existe, c'est à quelle distance du centre ville, et c'est ouvert jusqu'à quelle heure ? |
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 18:21:58 | ||||||||||||||
![]()
|
Ah un nouvel atelier ! Une petite question :
Le prépocesseur en C peut être considéré comme un "mini" langage, donc faudrait il coder un ptit langage avec la synthaxe prépocesseur, ou simplement reproduire les prépocesseur du C ? Parce que je vois mal comment coder des bouts du C sans le C en entier. Merci,
|
||||||||||||||
Pouet_forever
|
# Posté le 25/09/2009 à 18:54:11 | ||||||||||||||
Trance forever :)![]()
|
Le but (si j'ai bien compris) est que tu indiques ton fichier à "compiler" (main.c
) et ensuite c'est toi qui l'analyse et pas le C ![]() Et tu sors un autre fichier qui contient tout ce qui a été modifié. Je sais pas si ce que j'ai dit est clair
Tuto sur le préprocesseur C Pourquoi en vieillissant les biscuits durs deviennent mous et les biscuits mous deviennent durs ? Est-ce que le mot «tumeur» a été inventé par un médecin qui aime l'humour noir? ![]() warning: target of assignment not really an lvalue; this will be a hard error in the future Codes sources Apple c'est par là -> Apple Open Source |
||||||||||||||
gnomnain
|
# Posté le 25/09/2009 à 18:56:18 | ||||||||||||||
![]()
|
Citation : Colb-Seton
Ah un nouvel atelier ! Une petite question : Le prépocesseur en C peut être considéré comme un "mini" langage, donc faudrait il coder un ptit langage avec la synthaxe prépocesseur, ou simplement reproduire les prépocesseur du C ? Parce que je vois mal comment coder des bouts du C sans le C en entier. Merci, En fait, le préprocesseur C peut s'utiliser avec autre chose que du C. Par exemple, tu peux t'en servir comme un tout petit langage de templates quand tu as juste à faire quelques trucs simples (sans boucles). ![]() Haskell - Learn You a Haskell - Real World Haskell - xmonad Pourquoi on ne viendra pas vous plagier (ou "On veut les sources !") Apprenez Haskell ! - #sdz |
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 19:07:18 | ||||||||||||||
![]()
|
Citation : Pouet_forever
Je sais pas si ce que j'ai dit est clair ![]() Pas vraiment non .Citation : gnomnain En fait, le préprocesseur C peut s'utiliser avec autre chose que du C. Par exemple, tu peux t'en servir comme un tout petit langage de templates quand tu as juste à faire quelques trucs simples (sans boucles). Merci, mais ça ne répond pas à ma question qui est : Citation : Moi-même faudrait il coder un ptit langage avec la synthaxe prépocesseur, ou simplement reproduire les prépocesseur du C ?
|
||||||||||||||
GuilOooo
|
# Posté le 25/09/2009 à 19:11:02 | ||||||||||||||
PriPrOTtTt§!!!§![]()
|
On reproduit le préprocesseur C. On ne crée pas de langage.
EDIT : enfin, si tu veux le faire après, tu peux aussi hein . Mais l'idée ici c'est vraiment d'imiter le préproc. En vrai, je n'ai pas compris ce que tu entendais par « créer un ptit langage avec la syntaxe du préprocesseur », où as-tu vu ça dans le sujet ?
Édité
le 25/09/2009 à 19:15:18
par GuilOooo
|
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 19:16:37 | ||||||||||||||
![]()
|
Citation : Colb-Seton
je vois mal comment coder des bouts du C sans le C en entier Edit : Citation : GuilOooo EDIT : enfin, si tu veux le faire après, tu peux aussi hein . Mais l'idée ici c'est vraiment d'imiter le préproc. En vrai, je n'ai pas compris ce que tu entendais par « créer un ptit langage avec la syntaxe du préprocesseur », où as-tu vu ça dans le sujet ?Bah c'est que j'arrive pas à me représenter ce que ça pourrait donner. Donc je cherche des pistes.
Édité
le 25/09/2009 à 19:18:34
par Colb-Seton
|
||||||||||||||
shareman
|
# Posté le 25/09/2009 à 19:25:00 | ||||||||||||||
charlotte <3![]()
Ville : Mertzwiller |
En fait, tu dois te poser la question : qu'est-ce que tu dois pouvoir faire ?
- tu dois pouvoir reconnaitre les directives ; - mais tu dois aussi pouvoir retrouver un "appel" à #define au sein d'un code et agir en fonction du type de #define qu'il s'agit. Pour cela, il faudra un peu se creuser les méninges pour éviter de faire du O(n^42) (sache que tout le préproc (du moins ce que l'on propose d'implémenter ici) peut être implémenté de manière linéaire en la taille du fichier d'entrée). Mais remarque qu'à aucun moment tu ne dois toucher à la grammaire du langage C, donc j'ai envie de dire que le C là-dedans (en oubliant le préproc), on s'en fiche pas mal. Mais je peur que tu n'ai simplement pas compris ce que doit vraiment faire un préproc. Est-ce cela ta difficulté ?
Édité
le 25/09/2009 à 19:26:55
par shareman
Nouvel atelier : Codez votre propre petit préprocesseur pour langage C ! Citation : Woody Allen Si l'au-delà existe, c'est à quelle distance du centre ville, et c'est ouvert jusqu'à quelle heure ? |
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 19:35:21 | ||||||||||||||
![]()
|
Citation : shareman
Mais je peur que tu n'ai simplement pas compris ce que doit vraiment faire un préproc. Est-ce cela ta difficulté ? En effet je crois que t'as mis le doigt dessus. Pour moi les prépocs, ce sont des instructions, qui ne nécessitent pas de place en mémoire.
Édité
le 25/09/2009 à 19:35:56
par Colb-Seton
|
||||||||||||||
Maxibolt
|
# Posté le 25/09/2009 à 19:36:46 | ||||||||||||||
Devenir Gris.![]()
|
Et pourquoi ils ne nécessitent pas de place, d'après toi ? T'es pas loin en fait.
Oui oui, on a compris. BHM, ser bi1, manjay zan. Sota : « Le Python, c'est comme la fonction "Recherche", tant que tu ne l'emploies pas, ça ne sert à rien. » |
||||||||||||||
Eyyub
|
# Posté le 25/09/2009 à 19:45:10 | ||||||||||||||
#k3v1n5 rulz![]()
|
Citation : Maxibolt
Et pourquoi ils ne nécessitent pas de place, d'après toi ? T'es pas loin en fait. Parce que ça sert juste à indiquer certaines choses ? ![]() ©Nathan21 |
||||||||||||||
Maxibolt
|
# Posté le 25/09/2009 à 19:46:41 | ||||||||||||||
Devenir Gris.![]()
|
Et qu'est ce qu'on en fait, de ces indications ?
Oui oui, on a compris. BHM, ser bi1, manjay zan. Sota : « Le Python, c'est comme la fonction "Recherche", tant que tu ne l'emploies pas, ça ne sert à rien. » |
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 19:47:08 | ||||||||||||||
![]()
|
Je crois que j'ai trouvé. J'ai confondu le prépocesseur, et les directives :/ .
Donc d'après moi le but du topic serait : Analyser les directives du programme C, et de retranscrire le tout dans un fichier .txt par exemple. Nan ?
|
||||||||||||||
Eyyub
|
# Posté le 25/09/2009 à 19:47:30 | ||||||||||||||
#k3v1n5 rulz![]()
|
Citation : Maxibolt
Et qu'est ce qu'on en fait, de ces indications ? C'est comme des commentaires, mais pour le compilateur peut être ? ![]() ©Nathan21 |
||||||||||||||
Maxibolt
|
# Posté le 25/09/2009 à 19:49:07 | ||||||||||||||
Devenir Gris.![]()
|
colb-seton -> retranscrire quoi ?
eyyub -> juste des commentaires ? Il n'en fait absolument rien ? Oui oui, on a compris. BHM, ser bi1, manjay zan. Sota : « Le Python, c'est comme la fonction "Recherche", tant que tu ne l'emploies pas, ça ne sert à rien. » |
||||||||||||||
Eyyub
|
# Posté le 25/09/2009 à 19:51:00 | ||||||||||||||
#k3v1n5 rulz![]()
|
Citation : Maxibolt
Eyyub -> juste des commentaires ? Il n'en fait absolument rien ? Si si, mais comme les commentaires servent à indiquer des choses au programmeur, pour le compilateur ça va être des indications, indiquer un fichier à lier etc...? ![]() ©Nathan21 |
||||||||||||||
shareman
|
# Posté le 25/09/2009 à 19:51:52 | ||||||||||||||
charlotte <3![]()
Ville : Mertzwiller |
Bon, un exemple. Tu pars de ces fichiers :
Code : C - titre.h
Code : C - fable.h
Ton programme "préprocesseur" qui prend en entrée le fichier fable.h doit produire en sortie le fichier suivant (appelé arbitrairement "fable.h", ça c'est pas important) : Code : C - fable.h
Nouvel atelier : Codez votre propre petit préprocesseur pour langage C ! Citation : Woody Allen Si l'au-delà existe, c'est à quelle distance du centre ville, et c'est ouvert jusqu'à quelle heure ? |
||||||||||||||
Colb-Seton
|
# Posté le 25/09/2009 à 19:53:53 | ||||||||||||||
![]()
|
Oué je crois avoir compris. Merci !
Et ben ça va pas être très simple tout ça !
|
||||||||||||||
Maxibolt
|
# Posté le 25/09/2009 à 19:56:02 | ||||||||||||||
Devenir Gris.![]()
|
eyyub, ces indications, c'est tes directives. Et le programme qui en tient compte, c'est le préprocesseur.
Oui oui, on a compris. BHM, ser bi1, manjay zan. Sota : « Le Python, c'est comme la fonction "Recherche", tant que tu ne l'emploies pas, ça ne sert à rien. » |
||||||||||||||
Eyyub
|
# Posté le 25/09/2009 à 19:58:55 | ||||||||||||||
#k3v1n5 rulz![]()
|
Citation : Maxibolt
eyyub, ces indications, c'est tes directives. Et le programme qui en tient compte, c'est le préprocesseur. Ahh oui, effectivement j'ai confondu, excusez moi ... ![]() ©Nathan21 |
||||||||||||||
GurneyH
|
# Posté le 25/09/2009 à 22:15:38 | ||||||||||||||
![]()
|
Ou encore, avant la compilation, le préprocesseur transforme un fichier source en lui ajoutant(#include), en enlevant parfois(#ifdef), ou en transformant(#define)...
C'est un exercice très intéressant que vous proposez... Plus accessible que l'atelier petit langage, et très instructif sur la manière dont fonctionne le préprocesseur en général. Vraiment une bonne idée. Un Grand !... Plasmas Pour s'entrainer : UVa Online Judge, USACO, Programming challenges, Project Euler |
||||||||||||||
Cacophrene
|
# Posté le 29/09/2009 à 21:49:34 | ||||||||||||||
Il est vraiment TeX-TuX![]()
Ville : Le cannet |
Bonjour à tous !
Dommage qu'il n'y ait pas encore de codes par ici. Bon, voici ma contribution sans prétention rédigée en OCaml. Je le dis tout de suite : ce premier jet n'évoluera probablement pas, sauf pour corriger les bugs flagrants qui m'auraient échappés (code peu testé). Je vous détaille son fonctionnement ci-dessous :
Limitations : cette méthode exige que les commandes n'occupent qu'une seule ligne et qu'il n'y ait qu'une commande par ligne. L'utilisation du module Genlex crée des contraintes sur la syntaxe des variables et des valeurs associées. L'inclusion de fichier ne fonctionne qu'avec la syntaxe #include "fichier". Ce code ne permet pas de définir des macros. La fonction List.map n'étant pas tail-rec, les fichiers volumineux provoqueront un débordement de pile. Le traitement des #ifdef et #ifndef interdit certaines imbrications. Ces limitations peuvent être levées, mais je ne le ferai pas. Compilation/test :
Complexité : Pour un fichier de N lignes, le premier parcours sert à créer la liste de commandes, le second à les exécuter, le troisième et dernier à les écrire dans le fichier de sortie. On est donc à la louche en O(N), mais il faut aussi tenir compte de la complexité des fonctions qui manipulent les regexp. Bref je ne crois pas que ce soit rigoureusement linéaire... Tout le code se trouve entre les balises secret ci-dessous car il est un peu long. Je donne ici la signature commentée des principales fonctions de mon code en guise de vue d'ensemble : Code : OCaml
Pour le code, c'est ici : Secret (cliquez pour afficher) Code : OCaml
C'est tout pour ma participation. Bonne programmation. Edit: il manquait le cas Ifndef dans le code ! Cordialement, Cacophrène
Édité
le 06/10/2009 à 19:06:01
par Cacophrene
Mini-tuto - Introduction à LablGTK ; Mini-tuto - Introduction au dialogue C/OCaml ; OCamlBoggle - Boggle Solver ; MazeML - Labyrinthes ; OCamlTeX - Éditeur LaTeX (en cours) ; Blog - OCaml de pied en cap |
||||||||||||||
robocop
|
# Posté le 29/09/2009 à 22:15:05 | ||||||||||||||
|
|
Très belle démonstration ! Bravo, c'est très propre.
|
||||||||||||||
shareman
|
# Posté le 29/09/2009 à 22:15:45 | ||||||||||||||
charlotte <3![]()
Ville : Mertzwiller |
Merci pour ta participation !
À première vue, ton code semble très bon. Je vais me pencher dessus plus en détail. Même si tu dis que tu ne le feras pas, je t'encourage quand même très fortement à implémenter les macros et à optimiser un peu le tout dans la mesure du possible. En tout cas, bravo pour ce code, c'est de la qualité. Nouvel atelier : Codez votre propre petit préprocesseur pour langage C ! Citation : Woody Allen Si l'au-delà existe, c'est à quelle distance du centre ville, et c'est ouvert jusqu'à quelle heure ? |
||||||||||||||
Cacophrene
|
# Posté le 29/09/2009 à 22:24:57 | ||||||||||||||
Il est vraiment TeX-TuX![]()
Ville : Le cannet |
Re !
Citation : robocop Très belle démonstration ! Bravo, c'est très propre. Citation : shareman À première vue, ton code semble très bon. Je vais me pencher dessus plus en détail. Même si tu dis que tu ne le feras pas, je t'encourage quand même très fortement à implémenter les macros et à optimiser un peu le tout dans la mesure du possible. En tout cas, bravo pour ce code, c'est de la qualité. Merci à tous les deux pour vos commentaires sympathiques. Pour les macros et les optimisations qui peuvent être apportées à ce code, je ne garantis rien. C'est bien beau de jouer à coder, mais pendant ce temps le reste ne se fait pas Dans quelques jours peut-être...@+ Cacophrène Mini-tuto - Introduction à LablGTK ; Mini-tuto - Introduction au dialogue C/OCaml ; OCamlBoggle - Boggle Solver ; MazeML - Labyrinthes ; OCamlTeX - Éditeur LaTeX (en cours) ; Blog - OCaml de pied en cap |
||||||||||||||
robocop
|
# Posté le 29/09/2009 à 22:26:31 | ||||||||||||||
|
|
Au final, ça serait pas mal dans ocaml un outils un petit peu plus modulaire que genlex, sans pour autant passer par le monstre ocamllex. Tu as des infos sur ce genre de trucs Cacophrene ?
Édité
le 29/09/2009 à 22:28:15
par robocop
|
||||||||||||||
Cacophrene
|
# Posté le 29/09/2009 à 22:36:36 | ||||||||||||||
Il est vraiment TeX-TuX![]()
Ville : Le cannet |
Re !
Citation : robocop Au final, ça serait pas mal dans ocaml un outils un petit peu plus modulaire que genlex, sans pour autant passer par le monstre ocamllex. Tu as des infos sur ce genre de trucs Cacophrene ? En fait le fichier genlex.ml comporte beaucoup de paramètres en dur. Comme on ne peut pas les modifier, certaines choses deviennent lourdes à gérer. Un exemple : la commande #include <fichier> est problématique avec Genlex parce que beaucoup de caractères ne sont pas autorisés dans les identifiants. Ainsi #include <fable-2.h> ne peut pas être parsé simplement. D'un autre côté, il y a fort à parier pour qu'une version très fortement paramétrable de Genlex soit aussi beaucoup plus lente et, en fin de compte, sans grand intérêt dans la vraie vie. Donc soit il y a des libs externes qui proposent des solutions (peut-être quelque chose comme OCaml Batteries Included, mais je ne connais pas assez pour être catégorique), soit il faut passer par lex/yacc, même si c'est moins léger. Cordialement, Cacophrène
Édité
le 29/09/2009 à 22:37:48
par Cacophrene
Mini-tuto - Introduction à LablGTK ; Mini-tuto - Introduction au dialogue C/OCaml ; OCamlBoggle - Boggle Solver ; MazeML - Labyrinthes ; OCamlTeX - Éditeur LaTeX (en cours) ; Blog - OCaml de pied en cap |
||||||||||||||
Yannshu
|
# Posté le 30/09/2009 à 13:46:08 | ||||||||||||||
while (1337)![]()
|
Oh, je n'avais point vu ce beau sujet interessant.
![]() J'vais commencer a coder un p'tit truc ;). http://vlad.washere.free.fr/generateur/orly/ YA, RLY. Think before you say something stupid. Anciennement VladIsYourGod |
||||||||||||||
Pouet_forever
|
# Posté le 02/10/2009 à 10:47:01 | ||||||||||||||
Trance forever :)![]()
|
Bon ... je me suis pris la tête, j'ai galérer mais j'ai réussi à pondre quelque chose
![]() Ce n'est pas complètement terminé mais c'est pour avoir des avis si ya quelque chose qui cloche (yen à sûrement pas mal )J'ai pas vraiment géré la casse et compagnie ... ![]() J'aimerais avoir des conseils sur la manière de procéder pour les macros, parce que j'ai mon idée mais ça m'a l'air laborieux (encore ?!?) Je vais l'améliorer par la suite, mais voilà la première version ![]() Secret (cliquez pour afficher) Code : C - main.c
Secret (cliquez pour afficher) Code : C - analyse.c
Secret (cliquez pour afficher) Code : C - erreur.c
<secret>Code : C - analyse.h
Secret (cliquez pour afficher) Code : C - erreur.h
Secret (cliquez pour afficher) Code : C - inclusions.h
Avec ton code Shareman, j'arrive à ce résultat là : Code : Autre
Édité
le 10/01/2010 à 17:17:58
par Pouet_forever
Tuto sur le préprocesseur C Pourquoi en vieillissant les biscuits durs deviennent mous et les biscuits mous deviennent durs ? Est-ce que le mot «tumeur» a été inventé par un médecin qui aime l'humour noir? ![]() warning: target of assignment not really an lvalue; this will be a hard error in the future Codes sources Apple c'est par là -> Apple Open Source |
||||||||||||||
shamanas
|
# Posté le 02/10/2009 à 22:47:58 | ||||||||||||||
|
Firefox ftw!
Ville : Thessalonique |
Salut
Voici ce que j'ai reussi a coder pour l'instant(code mal organise ). Je vais reposter quand j'ameliorerai. Pour l'instant #include marche bien et #define (les "fonctions" define aussi! )Code(un fichier :S ):Code : C++
using namespace global supprime les doubles ## ne marchent plus system("PAUSE") supprime: pas besoin sous code::blocks Eh op les std::string en arguments sont devenus const std::string& Factorisation complete Changement du char(NULL) en '\0' Le else if j'avais oublier apres une modification merci d'avoir notenote: j'edite a achaque amelioration du code
Édité
le 03/10/2009 à 21:22:26
par shamanas
|
||||||||||||||
Retour au forum "Autres langages" ou à la liste des forums
Le Site du Zéro vous proposera bientôt de nouveaux cours partant de Zéro dans d'autres domaines que l'informatique !

