[ANN] Nouvelle version de Prolog

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

: [ANN] Nouvelle version de Prolog

Dreyfuss Pierre-André (EDUM)
Salut Stef

Je n'ai pas tout testé mais cela semble marcher.
Il y a une petite correction à faire pour obtenir l'affichage des liste avec des virgules (comme à la lecture)

Mettre une ',' après le $ dans printOne:
ligne:  aStream nextPut: $, .



printOne: aStream
    car printOn: aStream.
    aStream nextPut: $, .
    (cdr isConsCell)
        ifTrue: [cdr printOne: aStream]
        ifFalse: [cdr ifNil: [^ self].
            aStream nextPutAll: '| '.
            cdr printOn: aStream]


Avec cette correction J'obtient avec la grammaire  des listes affichées correctement:

Grammar2 ?- ph(s,p,[]).
(ph(sujet(gn(det('le', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['le','chat','mange'])
(ph(sujet(gn(det('la', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['la','souris','mange'])
(ph(sujet(gn(det('un', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['un','chat','mange'])
(ph(sujet(gn(det('une', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['une','souris','mange'])
(ph(sujet('je', 1), v('mange', 1)) ['je','mange'])
(ph(sujet('tu', 2), v('manges', 2)) ['tu','manges'])


Test pour les listes:

testPrologList
"PAD 2008/07/06 test list behaviours"
        {
               
                'eq(l,[1,2,3]),eq(l,[h|t]).' -> 'an Array(an Array([1,2,3] 1 [2,3]))'.
                'eq([1,2,3],[h|t]).' -> 'an Array(an Array(1 [2,3]))'.
                'eq([1,2,3,4],[1,2|q])' -> 'an Array(an Array([3,4]))'.
                'eq([1,2,3,4],[1,h|q])' -> 'an Array(an Array(2 [3,4]))'.

       
        }
          do: [:assoc | self assert: ((Prolog evaluate: assoc key)asString) = assoc value asString]


Pad




_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr


_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

winmail.dat (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

RE : : [ANN] Nouvelle version de Prolog

Dreyfuss Pierre-André (EDUM)
OUblié de dire qu'il faut aussi corriger le test testFisherCh214

(mettre les virgules côté réponses)

testFisherCh214

        self assert: (String streamContents: [:str |
                                        (Chapter2 new outputStream: str)
                                                evalString: 'parse([#b,#b,#a,#a,#b,#a,#b])'])
                =
'0  [#b,#b,#a,#a,#b,#a,#b]
0  [#b,#a,#a,#b,#a,#b]
0  [#a,#a,#b,#a,#b]
1  [#a,#b,#a,#b]
1  [#b,#a,#b]
2  [#a,#b]
2  [#b]
2  []
'.

        self assert: (String streamContents: [:str |
                                        (Chapter2 new outputStream: str)
                                                evalString: 'parse([#b,#b,#a])'])
                =
'0  [#b,#b,#a]
0  [#b,#a]
0  [#a]
'



-------- Message d'origine--------
De: [hidden email] de la part de Dreyfuss Pierre-André (EDUM)
Date: dim. 06/07/2008 03:32
À: Squeak in french / Squeak en français
Objet : : [Squeak-fr] [ANN] Nouvelle version de Prolog
 
Salut Stef

Je n'ai pas tout testé mais cela semble marcher.
Il y a une petite correction à faire pour obtenir l'affichage des liste avec des virgules (comme à la lecture)

Mettre une ',' après le $ dans printOne:
ligne:  aStream nextPut: $, .



printOne: aStream
    car printOn: aStream.
    aStream nextPut: $, .
    (cdr isConsCell)
        ifTrue: [cdr printOne: aStream]
        ifFalse: [cdr ifNil: [^ self].
            aStream nextPutAll: '| '.
            cdr printOn: aStream]


Avec cette correction J'obtient avec la grammaire  des listes affichées correctement:

Grammar2 ?- ph(s,p,[]).
(ph(sujet(gn(det('le', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['le','chat','mange'])
(ph(sujet(gn(det('la', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['la','souris','mange'])
(ph(sujet(gn(det('un', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['un','chat','mange'])
(ph(sujet(gn(det('une', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['une','souris','mange'])
(ph(sujet('je', 1), v('mange', 1)) ['je','mange'])
(ph(sujet('tu', 2), v('manges', 2)) ['tu','manges'])


Test pour les listes:

testPrologList
"PAD 2008/07/06 test list behaviours"
        {
               
                'eq(l,[1,2,3]),eq(l,[h|t]).' -> 'an Array(an Array([1,2,3] 1 [2,3]))'.
                'eq([1,2,3],[h|t]).' -> 'an Array(an Array(1 [2,3]))'.
                'eq([1,2,3,4],[1,2|q])' -> 'an Array(an Array([3,4]))'.
                'eq([1,2,3,4],[1,h|q])' -> 'an Array(an Array(2 [3,4]))'.

       
        }
          do: [:assoc | self assert: ((Prolog evaluate: assoc key)asString) = assoc value asString]


Pad




_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr



_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

winmail.dat (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: : [ANN] Nouvelle version de Prolog

Stéphane Rollandin-2
In reply to this post by Dreyfuss Pierre-André (EDUM)
Dreyfuss Pierre-André (EDUM) a écrit :

> testPrologList
> "PAD 2008/07/06 test list behaviours"
> {
>
> 'eq(l,[1,2,3]),eq(l,[h|t]).' -> 'an Array(an Array([1,2,3] 1 [2,3]))'.
> 'eq([1,2,3],[h|t]).' -> 'an Array(an Array(1 [2,3]))'.
> 'eq([1,2,3,4],[1,2|q])' -> 'an Array(an Array([3,4]))'.
> 'eq([1,2,3,4],[1,h|q])' -> 'an Array(an Array(2 [3,4]))'.
>
>
> }
> do: [:assoc | self assert: ((Prolog evaluate: assoc key)asString) = assoc value asString]
>

ce test ne fonctionnera pas sous 3.8, où un Array est toujours affiché
sous la forme #(...)

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: : [ANN] Nouvelle version de Prolog

Stéphane Rollandin-2
In reply to this post by Dreyfuss Pierre-André (EDUM)
Dreyfuss Pierre-André (EDUM) a écrit :
> Je n'ai pas tout testé mais cela semble marcher.

tu as vu qu'il y a une nouvelle version sur SqueakMap ?

> Il y a une petite correction à faire pour obtenir l'affichage des liste avec des virgules (comme à la lecture)

je ne l'avais pas fait car je trouvais que c'était pas beau à lire
toutes ces virgules :) mais bien sur tu as raison il faut les mettre...


> Grammar2 ?- ph(s,p,[]).

ça vient d'où cette classe Grammar2 ?

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

RE : : [ANN] Nouvelle version de Prolog

Dreyfuss Pierre-André (EDUM)
Salut,
je met en pièce jointe le fichier grammarv2

A toi de voir s'il faut l'intégrer comme exemple, dans ce cas on peut renommer la classe grammar,
 
C'est un classique de l'utilisation de Prolog et un bon exemple de l'utilisation de liste.
(En remplaçant les structures générées par du code,et la grammaire par celle d'un langage informatique, on peut en faire un compilateur.)



Ps. J'ai complété le test pour les listes. Il y a pour les structures , espace entre les arguments à l'impression et non seulement , .


testList

{
               
                'eq(l,[1,2,3]),eq(l,[h|t]).' -> '([1,2,3] 1 [2,3])'.
                'eq([1,2,3],[h|t]).' -> '(1 [2,3])'.
                'eq([1,2,3,4],[1,2|q])' -> '([3,4])'.
                'eq([1,2,3,4],[1,h|q])' -> '(2 [3,4])'.
                'eq([''le'',''chat'',''mange''],[''le'',h|q])' -> '(''chat'' [''mange''])'.
                'eq([father(''John'',''Mary''),father(''Henry'',''Peter'')], [h|q])' ->  '(father(''John'', ''Mary'') [father(''Henry'', ''Peter'')])'.
                'eq(x,''John''),eq(y,''Mary''),eq([father(x,y),father(''Henry'',''Peter'')], [h|q])' ->  '(''John'' ''Mary'' father(''John'', ''Mary'') [father(''Henry'', ''Peter'')])'.
                'eq([father(x,y),father(''Henry'',''Peter'')], [h|q]),eq(x,''John''),eq(y,''Mary'')' ->  '(''John'' ''Mary'' father(''John'', ''Mary'') [father(''Henry'', ''Peter'')])'.
               
        }
        do: [:assoc |
                self assert: (String streamContents: [:str |
                                        (Prolog evaluate: assoc key) first printElementsOn: str]) = assoc value].


PAD


-------- Message d'origine--------
De: [hidden email] de la part de Stéphane Rollandin
Date: dim. 06/07/2008 17:08
À: Squeak in french / Squeak en français
Objet : Re: : [Squeak-fr] [ANN] Nouvelle version de Prolog
 
Dreyfuss Pierre-André (EDUM) a écrit :
> Je n'ai pas tout testé mais cela semble marcher.

tu as vu qu'il y a une nouvelle version sur SqueakMap ?

> Il y a une petite correction à faire pour obtenir l'affichage des liste avec des virgules (comme à la lecture)

je ne l'avais pas fait car je trouvais que c'était pas beau à lire
toutes ces virgules :) mais bien sur tu as raison il faut les mettre...


> Grammar2 ?- ph(s,p,[]).

ça vient d'où cette classe Grammar2 ?

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr



_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

winmail.dat (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: RE : : [ANN] Nouvelle version de Prolog

Stéphane Rollandin-2
Dreyfuss Pierre-André (EDUM) a écrit :
> Salut,
> je met en pièce jointe le fichier grammarv2

je ne l'ai pas reçu. ça fait deux fois que tu dis joindre un fichier et
que je ne l'ai pas (j'utilise Thunderbird). que se passe-t-il ?

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

RE : RE : : [ANN] Nouvelle version de Prolog

Dreyfuss Pierre-André (EDUM)
J'essaie encore une fois, pourtant ,il n'est pas grand.(2k)
Je te l'envoie aussi par une autre messagerie.
Pad


-------- Message d'origine--------
De: [hidden email] de la part de Stéphane Rollandin
Date: jeu. 10/07/2008 11:31
À: Squeak in french / Squeak en français
Objet : Re: RE : : [Squeak-fr] [ANN] Nouvelle version de Prolog
 
Dreyfuss Pierre-André (EDUM) a écrit :
> Salut,
> je met en pièce jointe le fichier grammarv2

je ne l'ai pas reçu. ça fait deux fois que tu dis joindre un fichier et
que je ne l'ai pas (j'utilise Thunderbird). que se passe-t-il ?

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr




_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

winmail.dat (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

RE : RE : RE : : [ANN] Nouvelle version de Prolog

Dreyfuss Pierre-André (EDUM)
Rebonjour,

Désolé le fichier joint dans le précédant mail est celui d'une autre version de grammaire utilisant append.
-------------------------------------------------------------------------------------
Avec ce fichier grammar2.st (class grammar) essayer:

phrase(s,p,[]).

Je joint le bon qui correspond au pages sur ofset,
La formulation avec  l'opérateur de liste | est plus simple qu'avec append.

Remarquez le fonctionnement de append  avec les deux premiers arguments non instanciés qui décompose la liste du troisième argument en tous les découpages en 2 listes.

Grammar ?- append(l1,l2,['le' ,'chat','mange','la','souris']).
(['le' 'chat' 'mange' 'la' 'souris'] [])

(['le','chat',mange','la'] ['souris'])
(['le','chat','mange'] ['la','souris'])
(['le','chat'] ['mange','la','souris'])
(['le'] ['chat','mange','la','souris'])
([] ['le','chat','mange','la','souris'])


La formulation du fichier grammarv2.st est plus élégante
 
on utilise simplement le découpage entre tête et reste de la liste.
Peut être directement testé par le goal:

Grammar ?- eq( l,['le','chat','mange']),eq(l,[t|r]).
(['le','chat','mange'] 'le' ['chat','mange'])

-------------------------------------------------------------------------------------
Avec le nouveau fichier ci-joint  Grammarv2.st (correspondant à la page sur ofset.)

Grammar2 ?- ph(s,p,[]).
(ph(sujet(gn(det('le', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['le' 'chat' 'mange'])
(ph(sujet(gn(det('la', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['la' 'souris' 'mange'])
(ph(sujet(gn(det('un', 'm'), n('chat', 'm')), 3), v('mange', 3)) ['un' 'chat' 'mange'])
(ph(sujet(gn(det('une', 'f'), n('souris', 'f')), 3), v('mange', 3)) ['une' 'souris' 'mange'])
(ph(sujet('je', 1), v('mange', 1)) ['je' 'mange'])
(ph(sujet('tu', 2), v('manges', 2)) ['tu' 'manges'])

Si vous n'arrivez pas à télécharger le fichier essayez le lien:

http://community.ofset.org/images/Grammarv2.st

Pour le détail sur le traitement de la grammaire:

http://community.ofset.org/index.php/Grammaire_g%C3%A9n%C3%A9rative

Pad


-------- Message d'origine--------
De: [hidden email] de la part de Dreyfuss Pierre-André (EDUM)
Date: ven. 11/07/2008 18:00
À: Squeak in french / Squeak en français
Objet : RE : RE : : [Squeak-fr] [ANN] Nouvelle version de Prolog
 
J'essaie encore une fois, pourtant ,il n'est pas grand.(2k)
Je te l'envoie aussi par une autre messagerie.
Pad


-------- Message d'origine--------
De: [hidden email] de la part de Stéphane Rollandin
Date: jeu. 10/07/2008 11:31
À: Squeak in french / Squeak en français
Objet : Re: RE : : [Squeak-fr] [ANN] Nouvelle version de Prolog
 
Dreyfuss Pierre-André (EDUM) a écrit :
> Salut,
> je met en pièce jointe le fichier grammarv2

je ne l'ai pas reçu. ça fait deux fois que tu dis joindre un fichier et
que je ne l'ai pas (j'utilise Thunderbird). que se passe-t-il ?

Stef

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr






_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr

winmail.dat (9K) Download Attachment
12