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

Langages de programmation Discussion :

Créer son langage informatique


Sujet :

Langages de programmation

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut Créer son langage informatique
    Je voudrais créer mon propre langage informatique, à partir du php, c'est-à-dire mes propres fichiers avec leur extension propre (un langage interprété quoi, comme le php lui-même). J'ai déjà posté ailleurs, mais ici ça me paraît plus indiqué.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut Prroblême 1: segmenter mon code.
    Après avoir beaucoup cherché, j'ai trouvé une solution partielle: j'utilise la commande pour prendre tout le contenu du fichier dans une variable, puis j'explose ma variable EXPLODE pour couper au niveau des ";" (et pour pouvoir les gerer successivement avec EREGI.)
    L'ennui c'est que du coup, si il y a un point virgule entre deux "", il coupe mz commande en plein millieux .
    Est-ce que vous comprenez mon problême?
    Bon, il y a aussi un sous problême: est-ce qu'il est possible de compter le nombre d'élément d'un tableau? (pour compter combien j'ai de morceau avec EXPLODE)?

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu essaies de faire cela en PHP?

    Il te faudrait quelques bases. Meme si ces liens sont plus axes sur les compilateurs que les interpreteurs, la premiere et la troisieme reference de http://www.bourguet.org/v2/compilers peuvent t'aider. De meme que http://compilers.iecc.com/crenshaw. Chose amusante, la deuxieme reference dans ma page concerne un interpreteur mais devrait moins te convenir.

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    faire un compilateur ou un interpréteur en php est très bizarre... voire suicidaire


    pour en avoir déjà fait, je peux te conseiller d'utiliser des outils comme ocamllex/ocamlyacc ou camlp4 pour arriver à un arbre syntaxique... puis de convertir ton arbre syntaxique en arbre sémantique proche d'une sémantique dénotationnelle. ensuite de passer à la sémantique opérationnelle vers une machine virtuelle, ou aller jusqu'à faire le "backend" la projection vers le code machine


    mais c'est très compliqué... surtout si tu veux gérer un système de complexe, avoir des structures de données complexes, etc.
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    C'est très complexe de faire ceci en partant de rien.

    Hors php, on utilise souvent les outils yacc/lex ou bison/flex pour réaliser des compilateurs.

    Tu as des liens ici :

    ftp://ftp-developpez.com/general/cours/PolyCompil.pdf

    http://neoflo.free.fr/cours_c/cours-compilation.pdf

  6. #6
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Citation Envoyé par gorgonite
    pour en avoir déjà fait, je peux te conseiller d'utiliser des outils comme ocamllex/ocamlyacc ou camlp4...
    C'est pas moi qui dirait le contraire, mais utiliser Camlp4 quand on ne sait même pas ce que c'est qu'un compilateur c'est... ... enfin, c'est vraiment suicidaire, sado-maso !

    Il faudrait vraiment faire un vrai bon tuto pour Camlp4, surtout que les mecs à l'INRIA ne trouvent même plus bon de documenter les nouvelles possibilités de leur programme !

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Juste pour donner un bémol à tous les conseils d'utilisation de générateurs de parseurs.

    D'après mon expérience, qui comporte la programmation de petits parseurs et des front-end pour des langages complets, avec et sans générateurs et la programmation de générateurs, les générateurs -- en particulier ceux basé sur les automates à piles -- ne sont réellement utiles que dans la zone de complexité moyenne, et quand on n'est pas trop exigeant sur la qualité du traitement des erreurs.

    Pour des langages simples, c'est généralement plus simple de le faire à la main.

    Pour des langages compliqués, c'est aussi généralement plus simple de le faire à la main, car ces langages ont souvent des caractéristiques qui ne se conforment pas aux hypothèses de base des générateurs.

    Il y a des critères qui augmentent la zone de pertinence des générateurs:
    - la familiarité avec le générateur (si on le connait déjà, ce peut être pertinent de l'utilisé pour un projet simple ou plus complexe)
    - le fait que le langage ne soit pas encore figé (c'est généralement plus facile de changer le langage accepté par un parseur généré que par un parseur écrit à la main)
    - le fait que le choix de la technique de génération puisse influencer la grammaire (si on peut adapter la grammaire à la technique utilisée par le générateur, on peut enlever les structures syntaxiques à problèmes).

    J'ai moins de problèmes avec les générateurs d'analyseurs lexicaux. Mais les écrire à la main ne me pose pas de problèmes non plus.

  8. #8
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Dans le choix, il y a aussi la classe de langages à laquelle le langage créé appartient... il ne faut pas l'oublier ce critère-la !

    C'est entre autres une bonne raison de préférer, parfois, mais pas tout le temps, Camlp4 que ocamlyacc/ocamllex, car ce premier reconnaît une classe de langages plus grande et est vraiment plus puissant.

  9. #9
    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
    Bonjour,

    Pour des langages simples, c'est généralement plus simple de le faire à la main.
    +1
    Par contre, lors de la spécification du langage, on se pose souvent la question d'intégrer ou non une syntaxe ou une fonctionnalité qui ne semble pas à priori indispensable. Quand je n'ai pas implémenté une telle fonctionalité pour gagner du temps, l'expérience a montré que presque systèmatiquement j'avais eu tort et que celà aurait été bien utile.

  10. #10
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Voilà. Vous avez fait peur à bubuche87 avec vos histoires...
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Pour des langages simples, c'est généralement plus simple de le faire à la main.
    Tout dépend où tu situe le simple du compliqué ! Il me semble bien que la version C de Python qui est un Langage très complet et puissant est fait à la main ou du moins dans 95% du projet si je me trompe pas !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  12. #12
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Franck.H
    Tout dépend où tu situe le simple du compliqué ! Il me semble bien que la version C de Python qui est un Langage très complet et puissant est fait à la main ou du moins dans 95% du projet si je me trompe pas !
    J'ai ecrit de toute maniere que les generateurs n'etaient utiles que dans une zone de complexite moyenne :-) Et cette zone depend naturellement du generateur et de la personne qui doit mettre en place le parseur.

    Et la complexite en question est la complexite syntaxique. Le lisp est un langage tres complet et tres puissant. Sa syntaxe est d'une simplicite inegalable. Et une partie de sa puissance tient de cette simplicite.

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    franchement, je ne comprends pas ce que vous reprochez à flex ou ocamllex dans le cas des langages non "context-dependent"


    j'ai fait un test hier soir pour parser un langage C sans typedef et macro... et ça marche très bien
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #14
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gorgonite
    franchement, je ne comprends pas ce que vous reprochez à flex ou ocamllex dans le cas des langages non "context-dependent"
    Je reproche rien a flex. En fait, les generateurs d'analyseurs lexicaux ont une zone d'applicabilite plus grande que les generateurs d'analyseurs syntaxiques.

    j'ai fait un test hier soir pour parser un langage C sans typedef et macro... et ça marche très bien
    Tu as fais un parseur avec flex?

    Sans typedef, c'est tricher. C'est la source de complexite principale dans l'analyse du C.

  15. #15
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Sans typedef, c'est tricher. C'est la source de complexite principale dans l'analyse du C.


    je sais...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

Discussions similaires

  1. Créer son widget GTK+ en Langage C
    Par Franck.H dans le forum C
    Réponses: 0
    Dernier message: 07/07/2013, 13h52
  2. [C#] Créer son journal d'évènement perso
    Par globeriding dans le forum ASP.NET
    Réponses: 17
    Dernier message: 16/01/2006, 22h56
  3. Utilisations actuelles des principaux langages informatiques
    Par librart dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 03/07/2004, 15h37

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