Aller au contenu

Théorie des langages et mise en pratique


Messages recommandés

Bonsoir, je me présente, Chtit de nom, Air de prénom, développeur en informatique.

Comme les plus acharnés d'entre vous le savent, la théorie des langages est une partie majeure de l'informatique puisqu'étant à la base de tout (ou presque).

C'est en se basant la dessus que mon groupe et moi, 4 étudiants en seconde année de DUT Informatique, avons décidé d'étudier ce sujet et de créer un langage proche de l'algorithmique tel qu'il est enseigné dans notre établissement (ndlr: IUT Charlemagne, Nancy).

Le langage se nomme CCOSC (Ca Compile On Se Casse, on était vachement inspiré) et fonctionne à l'aide des outils jflex et yacc (équivalents java de flex et bison).

L'interpréteur et le compilateur (une sorte de machine virtuelle) ont été developpés en java également.

Le langage est extrémement riche et comporte tout ce que nous sommes en droit d'attendre d'un langage non graphique à l'exception des types et structures , non implémentés par manque de temps mais qui pourraient être ajoutés très facilement.

Pour l'occasion, nous avons (moi en fait, et j'en suis fier) developpé un IDE multilangages pour pouvoir coder en CCOSC plus rapidement et plus instinctivement que via le notepad ou wordpad (qui a dit emacs?).

En voici un premier screenshot avec un exemple de code des plus basiques:

ccosce.jpg

Ce que je propose ici c'est de faire de se topic un topic épinglé et qui contiendrait non seulement le rapport du projet avec toutes les explications donc mais également un résumé synthétique sur la théorie des langages pour tout ceux qui aimeraient la découvrir.

Voici le rapport officiel du projet:

Rapport ccosc

Et également un petit résumé plus ou moins correct écrit au début du projet

comportant donc les idées, pas forcément bien exprimées. Je le mettrai à jour s'il vous plait sinon, je le laisserai tel quel.

Synthèse

Désolé pour le format, je mettrai des pdf quand j'aurais le temps.

Je propose ceci car suite à notre soutenance, nous avons été plébiscité par le jury et le public pour en faire un projet sous licence GPL à titre d'aide et d'exemple pour les interessés.

Seriez-vous éventuellement enclin à voir un tel post épinglé ou la théorie des langages est-elle inutile à votre sens?

Voici enfin les fichiers compilés pour une version de démo.

Fichiers compilés

Soit vous avez java installé (1.4.2) et vous lancez le .bat soit vous installez java (toujours 1.4.2 pas testé avec le 1.5 mais à priori il ne doit pas aimer tout ce qui est vector/linkedList) et vous lancez le .bat

Ici sont présents les thèmes. Remplacez le dossier themes de l'apllication dans Ressources par celui présent dans le zip (il ne s'agit que de skin pour embellir, l'application fonctionne très bien sans).

Skins

Voici enfin les sources tant attendues, j'ai verifié, ca correspond à la dernière version. Soyez indulgent, il doit trainer un bug ou deux dont un problème d'undo/redo du à la coloration syntaxique. De plus, le code étant écrit en parallèle des cours (donc la nuit), il y'a un paquet des "fautes" ou du moins des sections de codes qui auraient pus être plus propres.

Sources du projet CCOSC

[EDIT] Bon, première maj avec les documents, je remettrai le post en forme des que j'aurai du temps et je posterai les sources à mon retour. Bon week end à tout ceux qui en profitent.

[EDIT2] Ajout des fichiers compilés et des skins

[EDIT3] Mise à jour avec l'ajout (enfin) des sources

Lien vers le commentaire
Partager sur d’autres sites

Bon alors vous n'êtes que deux à avoir répondu mais même une personne c'est déjà suffisant pour que je fasse un vrai beau post la dessus.

Des que je rentre de week end(dimanche donc, je vous fais un post complet et rédigé, promis).

Ca me fait plaisir de voir que des gens s'interessent à notre boulot parceque croyez moi, la théorie des langages sans prof et sans cours, c'est extrèmement balèze.

Lien vers le commentaire
Partager sur d’autres sites

Salut a toi!!!

Moi ca m'interesse aussi de voir ce que tu as fait parce que je suis en DUT GTR et j'aimerais poursuivre apres ca dans la programmation mais bon dans l'informatique en general, donc ca m'interesse de voir des gens faire des trucs de malade :francais:

Désolé de pas avoir repondu bien avant, mais ca m'interesse ca tu peux le croire :chinois:

Lien vers le commentaire
Partager sur d’autres sites

enfin un langage en français !

bon, c'est vrai, c'est un grand pas pour la popularisation du français, mais tu ne pense pas que ce langage n'en sera que plus difficile pour les programmeurs toutes nations confondues qui voudront l'apprendre ?

Lien vers le commentaire
Partager sur d’autres sites

Pour le post épinglé, on va voir ce que ça donne, mais par contre, il est tout à fait possible l'ajouter aux meilleurs liens. Le but étant d'avoir un minimum de topics épinglés dans chaque section (un serait l'idéal pour ne pas nuire à la lisibilité du forum).

On verra donc ce que le sujet donne.

Par contre, il ne faut pas être pressé, je risque de ne pas passer très souvent à l'avenir. Sinon il faudra voir avec Sky éventuellement.

Ça c'était sur la forme. Sur le fond, je ne vois pas bien l'intérêt du language. Faire un compilateur, c'est pas franchement compliqué avec lex/yacc. Et puis c'est encore un language de plus. Quel avantage à part rapport aux autres (à part le fait d'être en français :yes:) ?

Sinon si tu souhaites dévelloper un peu, tu peux recréer un topic et réserver quelques posts pour pouvoir faire un truc un peu conséquent.

Lien vers le commentaire
Partager sur d’autres sites

Et bien, le but premier du langage n'était pas forcément de faire un langage en français (çà on s'en fout un peu) mais vraiment de créer un langage.

En fait, à l'IUT, on n'a aucun cours de théorie des langages et ceux dispensés plus tard en IUP sont vraiment incomplets ou survolent le sujet.

Ce projet avait donc pour but de faire découvrir à nos confrères comment créer un langage et exposer les grands principes de la théorie des langages?

Nous avons également profité de cette occasion pour developper un IDE complet et stable permettant aux premières années qui découvrent l'informatique avant tout par l'apprentissage de l'algorithmie de compiler ce qui pour eux n'est qu'un ensemble de lignes en français écrites sur une feuille.

De plus, le compilateur comprend une partie graphique permettant de montrer le fonctionnement des piles mémoires et du compilateur en tant que tel.

Il ne s'agissait pas ici de créer un énième langage mais plutôt une de faire une démonstration à nos pairs de comment foncionne un langage, dossier à l'appui.

Lien vers le commentaire
Partager sur d’autres sites

Merci :mdr2:

Quelqu'un qui poste son premier message pour me dire ca, ca me fait plaisir.

Si tu t'es un peu servi de l'éditeur, tu auras remarqué un petit bug sur les undo/redo du à la coloration syntaxique. Si les gens plébiscitent ce travail, je me remettrai dessus et retirerai ce petit bug et ajouterai quelques fonctionnalités pas encore présentes par manque de temps.

Lien vers le commentaire
Partager sur d’autres sites

Je propose ceci car suite à notre soutenance, nous avons été plébiscité par les profs et le public pour en faire en projet sous licence GPL à titre d'aide et d'exemple pour les interessés.

Yep!

Fais nous signe quand tu mettras les sources à dispo :iloveyou::mdr2:

Sur le fond, je ne vois pas bien l'intérêt du language. Faire un compilateur, c'est pas franchement compliqué avec lex/yacc. Et puis c'est encore un language de plus. Quel avantage à part rapport aux autres (à part le fait d'être en français transpi.gif) ?

:mdr::p

PS: Notez la faute d'orthographe sur la pancarte "tu te vanteS"

Lien vers le commentaire
Partager sur d’autres sites

Rien à redire? Génial mon projet est parfait!!!

QUi l'eut cru?

Le code est plutot volumineux... :transpi:

J'commence donc par ton rapport de projet pour comprendre un peu le principe (machine virtuelle à pile, analyseur syntaxique et lexical, génerateur de code).

Pour l'instant j'ai juste survolé le code et j'ai rien compris à l'histoire du parser géneré par CUP (Parser.java) mais j'imagine que tu en parles dans ton dossier...

:chinois:

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

Je remonte ce vieux topic car je suis toujours amoureux du code que j'ai pondu dessus même si parfois, on sent que certaines portions ont été tapées à la hate.

J'aimerais bien réussir à en faire un éditeur vraiment multi langage, c'est à dire avec un compilateur pour tous les langages.

Je suis bien conscient que créer un compilo par langage est extrèmement long, c'est pourquoi je pensais passer par des fonctions génériques du style appele de console pour lancer une compilation/exécution.

Quelqu'un serait motivé pour m'apporter des idées brillantes pour faire évoluer l'éditeur?

J'aimerais bien que les développeurs en herbe me disent ce qu'ils n'aiment pas sur leur ide habituel et ce qu'ils aimeraient voir apparaitr dans les prochaines générations d'ide.

Si un codeur de génie se promène et se sent intéressé par le projet, on peut bosser à plusieurs dessus sans problème...

Cordialement, AirChtit

Lien vers le commentaire
Partager sur d’autres sites

C'est pas pour plomber l'ambiance (mais faut bien des critiques nan ?), alors je m'y colle.

Rien à redire sur l'IDE, ça a du être un gros taf.

Maintenant, quel avantage a ton langage par rapport à ces concurrents ?

Dans quels cas, il vaut le coup d'être utilisé ?

Parce que je constate que c'est un projet évolué, de là à en faire un tuto pour que ça serve pas, j'en vois pas trop l'intérêt.

Lien vers le commentaire
Partager sur d’autres sites

Il est fait pour être utilisé au sein de l'IUT Charlemagne à Nancy, il a pour but de montrer aux premières années comment fonctionne un compilateur et surtout, vu qu'on commence par apprendre l'algorithme avant tout langage, leur montrer la finalité et les aider à débuguer leur code.

Maintenant, ce que je veux, c'est faire évoluer l'IDE pour lui donner une utilité au delà de cet établissement et donc le rendre multi-langages.

Cordialement, Airchtit.

Lien vers le commentaire
Partager sur d’autres sites

J'ai peut-être une idée, mais ça va en faire crier certains peut-être :eeek2:

Pourquoi ne pas porter votre compilateur/interpréteur sur Eclipse ?

C'est un environnement extrêmement robuste et modulable, qui a été prévu pour éditer tous les langages possibles et imaginables. Il "suffit" d'écrire des nouveaux composants en dérivant de composants existants (ex: éditeur à coloration syntaxique), et de se plugger sur les menus et barres d'outils pour rajouter des fonctions.

D'accord, c'est moins fun que d'écrire son propre IDE de A à Z, mais la solution serait davanage pérenne, surtout si les étudiants peuvent, dans le même IDE, faire tourner leur code CCOSC et leur code Java ou C. (Sans compter que savoir développer des composants pour Eclipse, ça peut être un gros plus en entreprise par la suite.)

Cette idée étant donnée, bien sûr, en respectant totalement le travail que tu as déjà fourni !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...