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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Free forum by Nabble | Edit this page |