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

Caml Discussion :

[Compilateur Caml] Problème de syntaxe sur mon arbre de syntaxe abstraite


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Points : 15
    Points
    15
    Par défaut [Compilateur Caml] Problème de syntaxe sur mon arbre de syntaxe abstraite
    Bonjour,
    Je dois faire un compilateur Caml en Caml, et quand je lance mon makefile, j'ai une erreur de syntaxe dans mon arbre de syntaxe abstraite que je ne comprend pas...

    File "ast.mli", line 17, characters 3-14:
    Syntax error
    make: *** [main.cma] Erreur 2


    Voilà le fichier complet avec en rouge la ligne qui me pose problème... :

    Je soupçonne l'erreur stupide. Je ne suis ni à laise avec la compilation, ni avec caml donc...

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    type fichier = decl list
    
    and decl =
        | Let of motif*expr
        | Let of string*motif*expr
        | Let of expr
        
    and motif =
        | Var of string
        
    and expr =
        | simple_expr
        | Fun of motif*expr
        | Unop of unop*expr
        | Op of expr*op*expr
        | EsE of expr*simple_expr
        | Concat of expr*expr
        | If of expr*expr*expr
        | Letin of motif*expr*expr
        | Letin of ident*motif*expr*expr
        | Match of expr*ewpr
        | AddList of motif*motif*expr
        
    and simple_expr =
        | expr
        | Var of string
        | Cst of const
        
    and op = Sum | Diff | Mult | Div | SumF | DiffF | MultF | InfEq | SupEq | Sup | Inf | Diff | Eq | Et | Ou
    
    and unop = Minus | MinusF | Not
    
    and const =
        | Cst of int
        | Cst of float
        | Cst of bool
        | String of string
    ;;

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    On dirait qu'il manque une majuscule.


    Et sinon : un compilateur ? Qui génère quoi en sortie ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Mon dieu... LLB... c'était bien ca... j'ai changé ma ligne par
    | Simple_expr of simple_expr
    et c'est passé...

    Dans un sens c'est bien que ce ne soit que ca, merci a toi

    Sinon pour répondre à ta question, a terme le compilo devra générer un code assembleur depuis un fichier source caml allégé, mais pour le moment je m'occupe uniquement de la partie analyse syntaxique.

    En tout cas merci a toi

  4. #4
    Membre éprouvé
    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
    Points : 1 284
    Points
    1 284
    Par défaut
    Bonne chance pour le GC ! enfin, surtout pour la partie de la gestion des racines...

    Ils te demandent vraiment ça à l'école ? Ca m'étonne tout de même, car le Caml (même dans sa version noyau stable), c'est beaucoup plus difficile à compiler que du C.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #5
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    Ils te demandent vraiment ça à l'école ? Ca m'étonne tout de même, car le Caml (même dans sa version noyau stable), c'est beaucoup plus difficile à compiler que du C.

    ils ne feront sans doute pas une compilation vers un format binaire, mais vers une machine virtuellement assez haut niveau style ZAM-like... c'est un sujet classique de 2ème année dans beaucoup d'écoles
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    à terme ... mais pour le moment je m'occupe uniquement de la partie analyse syntaxique
    Je doute que tu arrives jamais à ce terme.

    Voici pourquoi j'en doute: l'analyse syntaxique est sans conteste l'étape la plus facile.

    Or la bonne conduite de ton projet voudrait que tu commences par l'étape la plus difficile à tes yeux.
    Pourquoi ?
    1. Parce que si ton projet devait se casser la figure autant qu'il le fasse au plus vite (tu perdrais moins de temps que s'il capotait plus tard)
    2. Tu apprends davantage sur la partie la plus difficile, donc si ton projet capotait, en commençant par le plus difficile tu as appris le plus de chose (au contraire si tu as commencé par ce que tu savais déjà faire alors tu n'as presque rien appris)
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Par ailleurs, pour l'analyse syntaxique on a un bon outil déjà tout prêt, à savoir Camlp4. Il est un peu complexe (en particulier son AST caml est fait pour contenir toute la syntaxe du OCaml, voire un peu plus, donc il faudra en négliger une partie si tu travailles sur un sous-langage simplifié), mais assez pratique à utiliser : tu as déjà un parser, l'AST existe déjà et est (grâce à un sucre syntaxique) plutôt agréable à utiliser.

  8. #8
    Membre éprouvé
    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
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    ils ne feront sans doute pas une compilation vers un format binaire, mais vers une machine virtuellement assez haut niveau style ZAM-like... c'est un sujet classique de 2ème année dans beaucoup d'écoles
    Oui, oui, bien-sûr, moi je parlais uniquement pour de la compilation en assembleur.

    Cependant, une idée m'est venue à l'esprit cette nuit : faire un compilateur qui crache de l'assembleur et dont le code craché soit compatible avec les procédures déjà implantées dans OCaml ; entre autres, je pense à toutes les fonctions qui régissent le GC. De cette façon, il n'y a plus besoin de recréer soi-même une nouvelle implantation du langage de A à Z... et en plus le code assembleur produit est compatible avec l'implantation officielle !

    Citation Envoyé par bluestorm
    Par ailleurs, pour l'analyse syntaxique on a un bon outil déjà tout prêt, à savoir Camlp4. Il est un peu complexe (en particulier son AST caml est fait pour contenir toute la syntaxe du OCaml, voire un peu plus, donc il faudra en négliger une partie si tu travailles sur un sous-langage simplifié), mais assez pratique à utiliser : tu as déjà un parser, l'AST existe déjà et est (grâce à un sucre syntaxique) plutôt agréable à utiliser.
    Bonne idée, et c'est aussi, et surtout, plus élégant !
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de surcharge sur mon objet
    Par MasterFunk dans le forum ASP.NET
    Réponses: 9
    Dernier message: 06/06/2007, 13h59
  2. [DAO] problème avec Requery sur mon recordset
    Par vcattin dans le forum VBA Access
    Réponses: 8
    Dernier message: 03/04/2007, 23h08
  3. problème de son sur mon pc portable dell
    Par optitou dans le forum Windows XP
    Réponses: 5
    Dernier message: 11/03/2007, 12h47
  4. [phpMyAdmin] Problèmes connection phpMyAdmin sur mon pc (gros problème)
    Par justmefr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/01/2007, 19h41
  5. Réponses: 5
    Dernier message: 17/11/2006, 17h49

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