Tu peux rajouter sur ta liste que :
Vous mangez la pomme | Et traduit, après bidouilles : mangez vous la pomme
Donc rejet du parser (C’est pareil pour Nous.)
Vous regardez | Fonctionne, sauf que la forme pronominale c’est : Vous vous regardez.
En fait, il traite le ‹ vous › ou ‹ nous › comme une forme pronominale.(Je passe sur le fait d’avoir choisi ‹ vous › pour marquer, après le verbe, la forme pronominal. ‹ soi › prête moins à confusion.)
Se regarder : regarder soi.
La solution est simple, tu remplaces cà :! Suppression de 'je' ou 'j^' en début de phrase.
! Par exemple, "je vais au nord" devient "vais au nord".
if (Mot(0) == 'je' or 'j^') {
EcraseMot(0);
Tokenise__(buffer,parse);
}
par ça :
if (Mot(0) == 'je' or 'j^' or 'tu' or 't^' or 'on' or 'nous' or 'vous') {
EcraseMot(0);
Tokenise__(buffer,parse);
}
Par contre vos librairies ne gèrent pas les verbes pour le ‹ tu › ! Le nous et le vous, oui !? Alors qu’ils sont quand même plus improbables et moins utiles.
Pour le ‹ à ›, tu remplaces dans ta routine enleve_accents cà :
if (word==0) ! non compris
par ça:
if (word==0 || word == 'à//') ! non compris
Pour l’apostrophe, tu remplace ça : for (i=WORDSIZE:i<WORDSIZE+NbChars():i++) {
if (buffer->i == '-') LTI_Insert(i++, ' ');
if (buffer->i == ''') LTI_Insert(++i, ' '); ! ''' !*! autre notation ? '\'' par exemple ?
}
Par ça : for (i=WORDSIZE:i<WORDSIZE+NbChars():i++) {
if (buffer->i == '-') LTI_Insert(i++, ' ');
}
Et ça, dans ta routine enleve_accents :for (i=at:i<at+len:i++)
if (buffer->i=='é') buffer->i='e'; !*! plutôt un switch ?
Par ça :for (i=at:i<at+len:i++)
if (buffer->i==''') { LTI_Insert(++i,' '); at++; }
else if (buffer->i=='é') buffer->i='e';
Et tu testes avec ce bout de code qui affiche le parser. Pour ça, tu rajoutes ça : buferparse(); à la fin de LanguageToInformese() et tu l’enlèveras une fois les tests effectués.[code]!% -C1
!% +language_name=French
Include « Parser »;
Include « VerbLib »;
[ LenMot motn; return parse->(motn4); ];
[ PosMot motn; return parse->(motn4+1); ];
[ DicMot motn; return parse–>(motn*2-1); ];
[ NbrMot; return parse->1; ];
[ NbrCar; return buffer->1; ];
[ buferparse motn at lgm;
print « ------------------------^ »;
print "bText : ";
for (at = WORDSIZE : at < WORDSIZE + NbrCar() : at++)
print (char) buffer->at;
print "^bParser : « ;
for (motn = 1 : motn <= NbrMot() : motn++){
at = PosMot(motn);
lgm = LenMot(motn) + at;
if (DicMot(motn)) print " [ »;
else print " ";
for ( : at < lgm : at++)
print (char) buffer->at;
if (DicMot(motn)) print "] ";
else print " ";
}
print « ^------------------------^ »;
];
Object Room with description « ROOM » has light;
[ Initialise; location = room; ;
Include « FrenchG »;[/code]
Pour le reste…