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

Java Discussion :

[Code pas clair] int lookahead = System.in.read()


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 214
    Par défaut [Code pas clair] int lookahead = System.in.read()
    Bonjour,

    Je suis en train de lire un livre sur les compilateurs (le dragon book). Il donne le code java comme exemple, mais je n'arrive pas à le comprendre... Voila le début du code (je me taper la suite si nécessaire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.io.*;
    class Parser {
        static int lookahead;
     
        public Parser(){
            lookahead = System.in.read();
        }
     
        void expr() ...
       ...
    Selon ce que je comprends, lookahead est un integer. Ensuite, quand on initialise Parser, on lit une entrée. Or, cette entrée est une suite de caractère (des chiffres, des '+' et des '-', genre '9-5+2'). Comment lookahead qui est un int peut contenir un '+' ou un '-' ?

    Christophe

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par Christophe Genolini Voir le message
    Selon ce que je comprends, lookahead est un integer. Ensuite, quand on initialise Parser, on lit une entrée. Or, cette entrée est une suite de caractère (des chiffres, des '+' et des '-', genre '9-5+2')
    System.in est un InputStream. Autrement dit, une source de données. Or, d'apres la javadoc, un InputStream possède une fonction dont la signature est int read(); qui renvoie le prochain caractere lu depuis l'input stream. Par conséquent, si tu entres, comme dans ton exemple, la chaine "9-5+2", lookahead prendra la valeur du code ASCII de '9' c'est à dire 57.

  3. #3
    Membre chevronné
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Par défaut
    Si tu veux voir toutes les transformations ASCII comme le '9' qui est 57, vas sur ce site Ascii Table. Tu vas passer de la colonne "chr" à la colonne "Dec" pour en décimal.

  4. #4
    Membre chevronné

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 214
    Par défaut
    Donc la chaine '9-5+2' sera lu comme une suite de characters ascii.

    Merci pour vos explications, c'était très clair.

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

Discussions similaires

  1. code matlab n'est pas clair
    Par nanouchg dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 26/04/2011, 21h29
  2. ligne de code pas clair
    Par asie86 dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2007, 12h01
  3. [debutant]erreur int to string alors qu il n y a pas de int
    Par Battosaiii dans le forum SL & STL
    Réponses: 1
    Dernier message: 06/11/2005, 15h10
  4. [Dates] Pb avec dates, aides pas claires en fait :(
    Par zax-tfh dans le forum Langage
    Réponses: 4
    Dernier message: 10/09/2005, 13h55
  5. Trucs pas claire
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 09/07/2003, 21h10

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