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 :

Syntaxe pour Stream non reconnue à la compilation


Sujet :

Caml

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Syntaxe pour Stream non reconnue à la compilation
    Bonjour,

    je fais mes premiers pas en ocaml, et j'aimerais écrire un analyseur syntaxique basique.
    Je suis parti d'un code dans l'introduction du manuel d'ocaml, utilisant les modules Genlex et Stream.

    Le problème est que ce code, même réduit à sa plus simple expression, génère une
    erreur de syntaxe à la compilation, alors qu'il passe sans problème dans l'interpréteur intéractif.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #load "camlp4o.cma";;
    open Genlex;;
    open Stream;;
    [< '1; '2; '3 >];;
    En entrant ce code ligne par ligne dans l'interpréteur interactif :
    il renvoie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    - : int Stream.t = <abstr>
    En revanche, en tentant de compiler (à ce que j'ai compris il ne s'agit d'ailleurs pas d'une réelle compilation) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ocaml -I +camlp4 test2.ml
    j'obtiens une erreur de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File "test2.ml", line 4, characters 0-2:
    Syntax error
    Quelqu'un aurait-il une idée d'où pourrait provenir le problème ?

  2. #2
    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
    La réponse est là, paragraphe 7.2... :

    http://caml.inria.fr/pub/docs/manual...manual021.html
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    en comilant avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ocamlc -pp camlp4o test2.ml
    j'obtiens une erreur du préprocesseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Camlp4: Uncaught exception: DynLoader.Error ("/usr/lib/ocaml/camlp4/camlp4o.cma", "error while linking /usr/lib/ocaml/camlp4/camlp4o.cma.\nReference to undefined global `Toploop'")
     
    Preprocessor error
    A ce que j'ai compris, ocaml est simplement l'interpréteur, tandis que ocamlc est le compilateur.
    Mais dans ce cas, pourquoi je peux quand même compiler le programme avec ocaml, sauf qu'il n'accepte pas les syntaxes particulières ?
    Et pourquoi le #load n'est pas reconnu par ocamlc ?

  4. #4
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par rommik
    A ce que j'ai compris, ocaml est simplement l'interpréteur, tandis que ocamlc est le compilateur.
    Mais dans ce cas, pourquoi je peux quand même compiler le programme avec ocaml, sauf qu'il n'accepte pas les syntaxes particulières ?
    Et pourquoi le #load n'est pas reconnu par ocamlc ?
    Le #load est une instruction pour le toplevel, l'interpréteur. C'est d'ailleurs pour cela qu'elle a une syntaxe si particulière, parce qu'elle ne fait pas partie du langage. Pour le compilo, c'est remplacé par -pp camlp4o. Il te faut donc la supprimer du code source

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Ok, . C'est beaucoup plus clair maintenant.

Discussions similaires

  1. Syntaxe <controls:ObjectCollection> non reconnue.
    Par laurent_diep dans le forum Silverlight
    Réponses: 2
    Dernier message: 09/12/2008, 18h26
  2. wxGLCanvas non reconnu à la compilation
    Par erniubo dans le forum wxWidgets
    Réponses: 3
    Dernier message: 08/12/2008, 21h40
  3. Réponses: 4
    Dernier message: 23/09/2007, 19h10
  4. time.h non reconnu en compilant avec gcc
    Par chris78 dans le forum Bibliothèques
    Réponses: 12
    Dernier message: 28/07/2006, 14h16
  5. Réponses: 3
    Dernier message: 12/10/2005, 13h53

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