Partage
  • Partager sur Facebook
  • Partager sur Twitter

créer un compilater

    8 février 2016 à 19:02:54

    bonsoir,

    je veut créer un compilateur pour un langage fonctionnel, voici un exemple:

    main(x)=isPrime(x);
    isPrime(x)=isPrime0(x,2);
    isPrime0(x,y)=
    gth(x-y,
    zero(x%y,
    0,
    isPrime0(x,y+1)),
    1)
    ;

    ou zero, gth sont de fonctions prédifinies,voici la grammaire du programme:

    PRGM : := FUNCTION | FUNCTION PRGM
    FUNCTION : := id( FORMPARAM) = EXPR ;
    FORMPARAM : := NEFORMPARAM | "
    NEFORMPARAM : := id | id , NEFORMPARAM
    EXPR : := EXPR + EXPR | EXPR – EXPR | - EXPR
    | EXPR * EXPR | EXPR / EXPR | EXPR % EXPR
    | id | cst | (EXPR) | ABSTRACTION| CALL
    CALL : := id(PARAMS)
    PARAMS : := " | NEPARAMS
    NEPARAMS : := EXPR | EXPR , NEPARAMS
    ABSTRACTION : := ( id : INTERVAL -> id ( EXPR ) : EXPR )
    INTERVAL : := [ EXPR , EXPR , EXPR ] | [ EXPR , EXPR ]
    je veut juste savoir comment dois-je stocker mes variables,

    merci.

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2016 à 23:12:32

      Renseigne toi sur JFlex and Cup si tu veux faire ça en java ou plus généralement sur Lex et Yacc si tu veux faire ça dans un autre langage. Après tu as aussi la possibilité de créer un interpréteur : un programme qui traduit un langage créé de toute pièce en un autre déjà existant puis utilise un compilateur pour compiler celui ci. La deuxième solution semble tiré par les cheveux mais créer un vrai gros compilateur prend énormément de temps alors qu'un interpréteur est plus simple. J'ai lu un article de quelqu'un ayant comparé la vitesse de compilation d'un programme avec son propre compilateur et celle de l'interprétation + la compilation et dans certains cas l'interprétation était plus rapide.

      édit : je n'avais pas vu ta question tout en bas elle passe assez inaperçu dsl.

      -
      Edité par Benevolar 11 février 2016 à 23:15:00

      • Partager sur Facebook
      • Partager sur Twitter

      créer un compilater

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown