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

Prolog Discussion :

Analyse syntaxique, partie du texte reconnue ou non reconnue


Sujet :

Prolog

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut Analyse syntaxique, partie du texte reconnue ou non reconnue
    Bonjour,

    Au plan purement théorique, est-ce que quelqu'un réussirait à m'expliquer comment il est possible de déterminer que oui ou non la partie du texte est reconnue dans les exemples d'appels ci-dessous ?


    Nom : 1.png
Affichages : 138
Taille : 47,3 Ko


    Nom : 2.png
Affichages : 175
Taille : 181,0 Ko

    Un grand merci pour votre aide précieuse.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour

    Sur l'écriture simplifiée s([a|S2], R] := s(S2, [b|R]). on voit que autant de a que de b sont consommés pour la simplification de l'expression et la création de R.
    Ce qui veut dire qu'il y a autant de a que de b consommés et que le reste se retrouve dans R.
    On remarque aussi qu'il faut au minimum une paire [a,b] testée s([a,b], []). donne Yes mais s([], R). donne False.
    Je ne sais pas si c'est très théorique mais c'est ce qu'on voit lorsqu'on détaille le prédicat s.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Merci,

    Comment passe-t-on de :


    à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s([a|S2],R) :- s(S2,[b|R]).
    Quelles sont exactement les étapes qui permettent d'atteindre ce résultat ? L'idée serait que je puisse appliquer le raisonnement et le déploiement des opérations en question de manière systématique afin de pouvoir résoudre tous les cas.

    Merci pour votre aide.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    le code s -> a S b | ɛ s'écrit en DCG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s --> [].
    s --> [a], s,[b].
    On obtient alors l'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ? :- listing(s)
    s(A, A).
    s([a|A], C) :-
            s(A, B),
            B=[b|C].
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Merci,

    dans cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ? :- listing(s)
    s(A, A).
    s([a|A], C) :-
            s(A, B),
            B=[b|C].
    que représente exactement le "A" majuscule ?

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Une liste qui peut éventuellement être vide
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    mais cette liste qui peut éventuellement être vide, si elle n'est pas vide, alors elle ne peut être que ab ou aabb ou aaabbb ou asb. C'est bien juste ?

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Non, elle peut contenir n'importe quoi, mais si c'est n'importe qoi, elle se retrouvera dans R.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     ?- s([a,c], R).
    R = [a,c] ;
    false.
     
     ?- s([b,c,s], R).
    R = [b,c,s] ;
    false.
     
     ?- s([a,b], R).
    R = [a,b] ;
    R = [] ;
    false.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Ok parfait merci. Dernière chose, si je n'ai pas accès à une machine et que je ne peux donc pas taper la commande listing, comment puis-je procéder pour passer de :


    à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s([a|S2],R) :- s(S2,[b|R]).
    Est-ce qu'il existe une méthode que je pourrais suivre à la lettre ?

  10. #10
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Elle existe sans doute, mais j'avoue ne pas la connaître.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Textarea et texte non reconnu
    Par alberto314 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/11/2015, 13h42
  2. analyse syntaxique avec pyparsing : parsing non complet
    Par awalter1 dans le forum Général Python
    Réponses: 5
    Dernier message: 21/07/2012, 20h20
  3. [Disque dur] esclave non reconnu, disque non vierge
    Par erox44 dans le forum Composants
    Réponses: 2
    Dernier message: 09/03/2010, 10h59
  4. Type Text non reconnu dans Delphi
    Par dimi2 dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2008, 10h32
  5. [WD10-Express]Analyse non reconnue dans WDmap
    Par evosan dans le forum WinDev
    Réponses: 20
    Dernier message: 04/04/2007, 16h48

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