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

Python Discussion :

Segmentation fault, Récursivité ?


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 51
    Points : 35
    Points
    35
    Par défaut Segmentation fault, Récursivité ?
    Bonjour à tous,

    J'essaie d'écrire un programme qui consiste à lire un fichier source où chaque ligne correspond à une instruction, puis à exécuter ces instructions ligne par ligne. Les instructions dans le fichier source sont du type ICONST, SCONST, SOUT, POP, DUP…. Elles agissent sur une pile qui est vide initialement.

    Après avoir défini une fonction qui vérifie que la syntaxe du fichier source est correcte, j'ai défini une fonction récursive 'executer' qui exécute une seule ligne. Elle est récursive parce que dans le fichier source, il peut y avoir des instructions de branchement dont l'exécution est censée déplacer la position actuelle d'exécution à une autre ligne du fichier source et exécuter l'instruction se trouvant à cette ligne.
    J''ai enfin défini une fonction 'executerProgrammeSource' qui exécute tout le fichier source en appelant la fonction executer.

    Voici la tête de mes deux fonctions :

    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
     
    #LesCommandes : liste contenant des listes 'commande' de taille 1 ou 2 selon si l'instruction commande[0] admet un paramètre ou pas
    def executer(commande,pile,LesCommandes):
       if len(commande)==1: #si commande contient une instruction sans paramètre (commande=['Nom_Instruction'])
        if commande[0] in Liste_des_Instructions_Arithmetiques: 
         InstructionsArithmetiques(pile,commande[0])
        elif commande[0]=='SIN': 
         clavier=str(input())
         InstructionSIN(pile,clavier)
        elif commande[0] in InstructionsSansParametres: 
         Dico_InstructionsSansParametres[commande[0]](pile)
       else: #commande contient une instruction agissant sur un paramètre (commande=['Nom_instruction',paramètre])
        if commande[0] in Liste_des_Instructions_de_Branchement:
         if commande[0]=='BRANCH': 
          InstructionBRANCH(LesCommandes,commande) #modifie la position de 'commande' dans la liste 'LesCommandes'
          executer(commande,pile,LesCommandes)
         else: 
          Dico_InstructionsDeBranchement[commande[0]](LesCommandes,commande,pile[len(pile)-1]) #idem
          executer(commande,pile,LesCommandes)
        elif commande[0] in InstructionsAgissantSurDesINT+InstructionsAgissantSurDesSTR:
         Dico_InstructionsParametres[commande[0]](pile,commande[1])
     
     
     
    def executerProgrammeSource(LesCommandes):
     pile=[]
     commande=LesCommandes[0]
     while commande != ['STOP']:
       executer(commande,pile,LesCommandes)
       commande=LesCommandes[LesCommandes.index(commande)+1]
     else: return None
    Quand je teste mon programme sur un fichier source consistant à afficher trois fois le mot 'hello', j'obtiens l'erreur suivante :

    avec une fenêtre de mon ordinateur qui dit que "Python suit unexpectedly. Click Reopen to open the application again. Click Report to ….."
    Est ce qu'il est possible de contrer cette erreur ?


    Bien à vous.

  2. #2
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Bonjour,


    Peut-on voir comment tu appelles ton programme pour qu'il affiche trois le mot 'Hello' ? (c'est-à-dire à quoi ressemble LesCommandes)

    Peut-on voir la fonction qui va agir sur ton mot 'Hello' ?

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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