IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Creation de langage avec c# + code completion


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 69
    Par défaut Creation de langage avec c# + code completion
    bonjour,

    quand je suis en c++ et je veux créer un nouveau langage (afin de faire des devs specifiques, ou fournir des outils à mes infographistes) j'utilise spirit ou xpressiv.

    Désormais je souhaite faire la même chose en c#, quelles libs me conseillez-vous? J'aimerai une lib qui permette aussi de faire du code completion dans un editeur.

    Cordialement,

    El Pedro

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Antlr est sans doute le meilleur outil possible pour le parser generator. Si tu préfères écrire le parser à la main, C# offre une classe Regex en standard.

    Côté IDE, tu peux tout simplement utiliser les biblios de Visual Studio pour créer et distribuer un clone de VS, ce cas d'utilisation ayant été spécifiquement élaboré pour les DSL ! Je n'ai pas d'expérience de première main mais ça ne doit pas être bien complexe. Enfin pour doter ce clone du support de ton langage il doit te suffire d'implémenter un language service qui doit peu ou prou se borner à parser le code pour exposer un DOM.

    Résumé :
    a) Je crée un parser via Antlr.
    b) Je crée un language service pour VS exploitant ce parser.
    c) Je crée un IDE reprenant l'UI de VS via les API dédiées et en incluant le language service développé précédemment.

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pour ce type d'application, on utilise directement C# comme langage spécialisé dans un environnement Visual Express.

    On fournit un projet de base avec les classes nécessaires aux outils métiers et une IHM de base pour choisir le code utilisateur à exécuter.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Sinon y a Irony qui a l'air pas mal aussi... Scott Hanselman avait écrit un billet à ce sujet, ça a l'air assez simple à utiliser

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 69
    Par défaut
    Merci pour vos réponses.
    Citation Envoyé par Graffito Voir le message
    Pour ce type d'application, on utilise directement C# comme langage spécialisé dans un environnement Visual Express.
    Je ne comprends pas vraiment? Si je veux creer des fonctions avec des protos comme "void peindre(element e)avec(color c)", je ne pas pas modifier c# (à moins d'un précompilo) ?

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Citation Envoyé par ElPedro Voir le message
    Si je veux creer des fonctions avec des protos comme "void peindre(element e)avec(color c)", je ne pas pas modifier c# ?
    Il suffit de créér la classe Public "Peinture" avec sa fonction void peindre(Element e, Color c) dans ton projet de développement dans lequel tu testes ces classes métiers publiques et d'ajouter l'exe de développement dans les références du projet de test.

    L'utilisateur n'aura plus qu'à coder normalement en C# dans sa copie du projet de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaPeinture=New Peinture() ;
    MaPeinture.Peindre(...

Discussions similaires

  1. code completion avec XCode et Qt 4.4
    Par epsilon68 dans le forum Qt
    Réponses: 2
    Dernier message: 29/06/2008, 10h27
  2. [C#] Probleme de creation de fichier avec Stream
    Par freddyboy dans le forum C#
    Réponses: 7
    Dernier message: 07/06/2004, 11h41
  3. [VB.NET] Création d'un tableau en code behind
    Par netr dans le forum ASP.NET
    Réponses: 6
    Dernier message: 11/05/2004, 10h02
  4. Peut-on faire du son juste avec du code assembleur ?
    Par Rick1602 dans le forum Assembleur
    Réponses: 7
    Dernier message: 26/03/2004, 17h39
  5. Quel langage avec Oracle????
    Par djedje11 dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 16/03/2004, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo