Commit c96046d7 authored by auraes's avatar auraes 💬
Browse files

Il n'y a plus que deux versions distinctes : avec ou sans accents

parent f243ae85
......@@ -50,15 +50,15 @@ La constante **OPTIONAL_TALK_TO** permet d’activer la grammaire du verbe *parl
*Version 3* :
La saisie du joueur ainsi que les mots du dictionnaire ne doivent pas être accentués (verbes, noms des objets, etc.)
*Version 5-8* :
La saisie du joueur peut être ou ne pas être accentuée, mais les mots du dictionnaire ne doivent pas l'être.
Si la constante **AVEC_ACCENTS** est définie, la saisie du joueur doit obligatoirement être accentuée ainsi que tous les mots du dictionnaire.
Si la constante **AVEC_ACCENTS** est définie, la saisie du joueur doit obligatoirement être accentuée ainsi que tous les mots du dictionnaire.
Si la constante **AVEC_ACCENTS** n'est pas définie, la saisie du joueur ainsi que les mots du dictionnaire ne doivent pas être accentués (comme pour la version 3)
Lors d'une saisie sans accents (v3, v5-8), la constante **DE_A_JOUER** permet d’éviter, dans la mesure du possible, un conflit avec la préposition « **de** ». Seul l'objet dé au singulier, et non suivi d’un adjectif, est géré ; il est possible d'adapter le code pour un usage particulier. L’objet « dé à jouer » doit être nommé « **'dé'** » dans sa propriété **name**.
Lors d'une saisie sans accents (v3, v5-8), la constante **DE_A_JOUER** permet d’éviter, dans la mesure du possible, un conflit avec la préposition « **de** ». Seul l'objet dé au singulier, et non suivi d’un adjectif, est géré ; il est possible d'adapter le code pour un usage particulier. L’objet « dé à jouer » doit être nommé « **'dj'** » dans sa propriété **name**.
```
Object de_6 "dé"
with
name 'dé',
name 'dj',
article ARTICLE_UN
has;
```
......
......@@ -22,7 +22,6 @@ Release 1;
Constant OPTIONAL_EXTENDED_VERBSET;
Constant OPTIONAL_TALK_TO;
!Constant AVEC_ACCENTS;
Constant DE_A_JOUER;
Constant INITIAL_LOCATION_VALUE = FaceMontagne;
......@@ -266,7 +265,7 @@ has light;
Object de_six "dé à jouer"
with
parse_name [;
if (NextWord() ~= 'dé') return 0;
if (NextWord() ~= 'dj') return 0;
if (NextWord() == 'a//' && NextWord() == 'jouer') return 3;
return 1;
],
......
......@@ -22,7 +22,6 @@ Release 1;
Constant OPTIONAL_EXTENDED_VERBSET;
Constant OPTIONAL_TALK_TO;
!Constant AVEC_ACCENTS;
Constant DE_A_JOUER;
Constant INITIAL_LOCATION_VALUE = FaceMontagne;
......@@ -255,7 +254,7 @@ has light;
Object de_six "dé à jouer"
with
parse_name [;
if (NextWord() ~= 'dé') return 0;
if (NextWord() ~= 'dj') return 0;
if (NextWord() == 'a//' && NextWord() == 'jouer') return 3;
return 1;
],
......
......@@ -47,55 +47,50 @@
];
Verb 'parler'
* 'a'/'au'/'aux'/'avec' creature -> TalkTo
* 'a'/'au'/'aux'/'avec' creature
* 'à'/'au'/'aux'/'avec' creature -> TalkTo
* creature -> TalkTo
* 'à'/'au'/'aux'/'avec' creature
'de'/'d^'/'du'/'des' topic -> Tell
* 'de'/'d^'/'du'/'des' topic
'a'/'au'/'aux'/'avec' creature -> Tell reverse
* creature 'de'/'d^'/'du'/'des' topic -> Tell
;
#Ifnot;
Verb 'parler'
* 'a'/'au'/'aux'/'avec' creature
* 'à'/'au'/'aux'/'avec' creature
'de'/'d^'/'du'/'des' topic -> Tell
* 'de'/'d^'/'du'/'des' topic
'a'/'au'/'aux'/'avec' creature -> Tell reverse
* creature 'de'/'d^'/'du'/'des' topic -> Tell
;
#Endif;
Verb 'repondre'
* 'a'/'au'/'aux' creature topic -> Answer reverse
* topic 'a'/'au'/'aux' creature -> Answer
Verb 'répondre'
* creature topic -> Answer reverse
* topic 'à'/'au'/'aux' creature -> Answer
;
Verb 'demander'
* noun 'a'/'au'/'aux' creature -> AskFor reverse
* 'a'/'au'/'aux' creature noun -> AskFor
* 'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo
* noun 'à'/'au'/'aux' creature -> AskFor reverse
* creature noun -> AskFor
* 'à'/'au'/'aux' creature 'de'/'d^' topic -> AskTo
* creature 'de'/'d^' topic -> AskTo
;
Verb 'dire'
* 'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo
* 'a'/'au'/'aux' creature topic -> Answer reverse
* topic 'a'/'au'/'aux' creature -> Answer
* 'à'/'au'/'aux' creature 'de'/'d^' topic -> AskTo
* creature 'de'/'d^' topic -> AskTo
* creature topic -> Answer reverse
* topic 'à'/'au'/'aux' creature -> Answer
;
Verb 'interroger'
* creature 'sur' topic -> Ask ! concernant
* creature 'a' 'propos' 'de'/'d^'/'du'/'des' topic-> Ask ! au_sujet_de
* creature 'sur' topic -> Ask ! concernant à_propos_de
;
!Verb 'attaquer'
! * creature -> Attack !noun?
! * creature 'avec' held -> Attack
!;
Verb 'montrer'
* held 'a'/'au'/'aux' creature -> Show
* 'a'/'au'/'aux' creature held -> Show reverse
* held 'à'/'au'/'aux' creature -> Show
* creature held -> Show reverse
;
#IfDef OPTIONAL_EXTENDED_VERBSET;
Verb 'reveiller'
Verb 'réveiller'
* 'se' -> Wake
* creature -> WakeOther
;
......@@ -114,10 +109,10 @@ Verb 'regarder' 'l//' 'r//'
* -> Look
* noun -> Examine
* 'sur'/'dans'/'par'/'par-dessus' noun -> Search ! derrière
! * 'a'/'au'/'en'/'vers' noun=ADirection -> Examine ! compass_look
* 'a'/'au' 'travers' noun -> Search
! * 'à'/'au'/'en'/'vers' noun=ADirection -> Examine ! compass_look
* 'à'/'au' 'travers' noun -> Search
! * 'sous' noun -> LookUnder
! * topic 'a'/'au'/'sur'/'dans' noun -> Consult
! * topic 'à'/'au'/'sur'/'dans' noun -> Consult
;
Verb 'examiner' 'x//'
......@@ -141,8 +136,8 @@ Verb 'fouiller'
!;
Verb 'aller'
* 'a'/'au'/'en'/'vers' noun=ADirection -> Go
* 'a'/'au'/'aux'/'sur'/'dans'/'sous' noun -> Enter
* 'à'/'au'/'en'/'vers' noun=ADirection -> Go
* 'à'/'au'/'aux'/'sur'/'dans'/'sous' noun -> Enter
;
Verb 'entrer'
......@@ -160,27 +155,27 @@ Verb 'sortir'
Verb 'passer'
* 'sur'/'dans'/'par'/'sous' noun -> Enter
* 'par-dessus' noun -> Enter
* 'a' 'travers' noun -> Enter
* 'à' 'travers' noun -> Enter
;
Verb 'monter'
* -> sGoUp
* 'a'/'au'/'aux'/'sur'/'dans'/'par'/'en' noun -> Enter
* 'à'/'au'/'aux'/'sur'/'dans'/'par'/'en' noun -> Enter
;
Verb 'descendre' 'd//'
* -> sGetOff
* 'de'/'d^'/'du'/'des' noun -> GetOff
* 'a'/'au'/'aux'/'sur'/'dans'/'par' noun -> Enter
* 'à'/'au'/'aux'/'sur'/'dans'/'par' noun -> Enter
;
Verb 'grimper'
* 'sur'/'a'/'au'/'aux'/'dans'/'par' noun -> Enter
* 'sur'/'à'/'au'/'aux'/'dans'/'par' noun -> Enter
;
Verb 'sauter'
* -> Jump
! * 'a' noun -> Jump ! la corde
! * 'à' noun -> Jump ! la corde
* 'sur'/'dans' noun -> Enter
* 'par-dessus' noun -> JumpOver
* 'par'/'de'/'du'/'des' noun -> Exit
......@@ -200,18 +195,18 @@ Verb 'nager' 'conduire'
;
Verb 'balancer' 'suspendre'
* 'se' 'a'/'au'/'aux'/'sur'/'dans' noun -> Swing
* 'se' 'à'/'au'/'aux'/'sur'/'dans' noun -> Swing
;
#Endif;
Verb 'prendre'
* multi -> Take
* multiinside 'a'/'au'/'aux' noun -> Remove
* multiinside 'à'/'au'/'aux' noun -> Remove
* multiinside 'de'/'d^'/'du'/'des'/'dans'/'sur'
noun -> Remove
;
Verb 'decoller' 'detacher'
Verb 'décoller' 'détacher'
* noun -> Take
;
......@@ -222,16 +217,16 @@ Verb 'acheter'
#Endif;
Verb 'donner'
* held 'a'/'au'/'aux' creature -> Give
* 'a'/'au'/'aux' creature held -> Give reverse
* held 'à'/'au'/'aux' creature -> Give
* creature held -> Give reverse
;
Verb 'lancer' 'jeter'
* noun -> ThrowAt
* held 'a'/'au'/'aux' noun -> ThrowAt
* held 'à'/'au'/'aux' noun -> ThrowAt
* held 'sur'/'dans'/'contre'/
'par'/'par-dessus' noun -> ThrowAt
* 'a'/'au'/'aux' noun held -> ThrowAt reverse
* creature held -> ThrowAt reverse
;
Verb 'poser'
......@@ -240,7 +235,7 @@ Verb 'poser'
* multiexcept 'sur' noun -> PutOn
;
Verb 'inserer'
Verb 'insérer'
* multiexcept 'dans'/'sous'/'entre' noun -> Insert
;
......@@ -275,7 +270,7 @@ Verb 'vider'
Verb 'pousser'
* noun -> Push
* noun 'a'/'au'/'en'/'vers' noun -> PushDir !contre?
* noun 'à'/'au'/'en'/'vers' noun -> PushDir !contre?
* noun 'sur'/'dans' noun -> Transfer
;
......@@ -298,14 +293,14 @@ Verb 'ouvrir'
Verb 'fermer'
* noun -> Close
* noun 'a'/'avec' held -> Lock
* noun 'à'/'avec' held -> Lock
;
Verb 'verrouiller'
* noun 'avec' held -> Lock
;
Verb 'deverrouiller'
Verb 'déverrouiller'
* noun 'avec' held -> Unlock
;
......@@ -314,7 +309,7 @@ Verb 'forcer' 'fracturer'
;
#IfDef OPTIONAL_EXTENDED_VERBSET;
Verb 'ecraser' 'presser'
Verb 'écraser' 'presser'
* noun -> Squeeze !appuyer_sur? (!=Push)
;
#Endif;
......@@ -323,23 +318,23 @@ Verb 'appuyer'
* 'sur' noun -> Push ! Squeeze !?
;
Verb 'allumer' 'demarrer'
Verb 'allumer' 'démarrer'
* noun -> SwitchOn
;
Verb 'eteindre' 'arreter'
Verb 'éteindre' 'arrêter'
* noun -> SwitchOff
;
Verb 'attacher'
* noun -> Tie
* noun 'a'/'au'/'aux'/'avec'/'sur'/'dans' noun -> Tie
* noun 'à'/'au'/'aux'/'avec'/'sur'/'dans' noun -> Tie
;
#IfDef OPTIONAL_EXTENDED_VERBSET;
Verb 'regler'
Verb 'régler'
* noun -> Set
* noun 'a'/'sur' special -> SetTo
* noun 'à'/'sur' special -> SetTo
;
Verb 'agiter' 'secouer'
......@@ -358,18 +353,18 @@ Verb 'creuser'
* 'sur'/'dans' noun 'avec' held -> Dig
;
Verb 'couper' 'dechirer'
Verb 'couper' 'déchirer'
* noun -> Cut
* noun 'avec' held -> Attack
;
Verb 'attaquer' 'casser' 'detruire' 'briser'
Verb 'attaquer' 'casser' 'détruire' 'briser'
* noun -> Attack !attaquer creature?
* noun 'avec ' held -> Attack
;
#IfDef OPTIONAL_EXTENDED_VERBSET;
Verb 'bruler'
Verb 'brûler'
* noun -> Burn
* noun 'avec' held -> Burn
;
......@@ -384,7 +379,7 @@ Verb 'nettoyer'
* noun -> Rub
;
!Verb 'utiliser' 'actionner' 'faire' 'deplacer'
!Verb 'utiliser' 'actionner' 'faire' 'déplacer'
! * topic -> VagueVerb
!;
......@@ -392,7 +387,7 @@ Verb 'toucher' 'caresser'
* noun -> Touch
;
Verb 'ecouter'
Verb 'écouter'
* -> Listen
* noun -> Listen
;
......@@ -403,7 +398,7 @@ Verb 'sentir'
;
#IfDef OPTIONAL_EXTENDED_VERBSET;
Verb 'gouter'
Verb 'goûter'
* noun -> Taste
;
......@@ -411,7 +406,7 @@ Verb 'chanter'
* -> Sing
;
Verb 'penser' 'reflechir'
Verb 'penser' 'réfléchir'
* -> Think
;
......@@ -938,13 +933,13 @@ Verb 'inventaire' 'i//'
[ UnlockSub;
if (ObjectIsUntouchable(noun)) return;
if (noun hasnt lockable) { PrintMsg(MSG_UNLOCK_NOT_A_LOCK, 'deverrouiller'); rtrue; }
if (noun hasnt locked) { PrintMsg(MSG_UNLOCK_ALREADY_UNLOCKED, 'deverrouiller'); rtrue; }
if (noun hasnt lockable) { PrintMsg(MSG_UNLOCK_NOT_A_LOCK, 'déverrouiller'); rtrue; }
if (noun hasnt locked) { PrintMsg(MSG_UNLOCK_ALREADY_UNLOCKED, 'déverrouiller'); rtrue; }
if (RunRoutines(noun, with_key) ~= second) { PrintMsg(MSG_UNLOCK_KEY_DOESNT_FIT); rtrue; }
give noun ~locked;
if (AfterRoutines()) rtrue;
if (keep_silent) rtrue;
PrintMsg(MSG_UNLOCK_SUCCESS, 'deverrouiller');
PrintMsg(MSG_UNLOCK_SUCCESS, 'déverrouiller');
];
[ WaitSub;
......@@ -1124,19 +1119,19 @@ Verb meta 'description'
* -> LookModeNormal
* 'longue' -> LookModeLong
* 'courte' -> LookModeShort
* 'breve'/'normale' -> LookModeNormal;
* 'brève'/'normale' -> LookModeNormal;
#IfDef OPTIONAL_FULL_SCORE;
Verb meta 'score'
* -> Score
* 'total' -> FullScore
* 'activer'/'on' -> NotifyOn
* 'desactiver'/'off' -> NotifyOff;
* 'désactiver'/'off' -> NotifyOff;
#Ifnot;
Verb meta 'score'
* -> Score
* 'activer'/'on' -> NotifyOn
* 'desactiver'/'off' -> NotifyOff;
* 'désactiver'/'off' -> NotifyOff;
#EndIf;
Verb meta 'oups'
......@@ -1321,15 +1316,15 @@ Verb meta 'lieux'
Verb 'commandes'
* -> CommandsOn
* 'activer'/'on' -> CommandsOn
* 'desactiver'/'off' -> CommandsOff
* 'désactiver'/'off' -> CommandsOff
* 'rejouer' -> CommandsRead;
Verb meta 'script' 'transcription'
* -> ScriptOn
* 'activer'/'on' -> ScriptOn
* 'desactiver'/'off' -> ScriptOff;
* 'désactiver'/'off' -> ScriptOff;
Verb meta 'verifier'
Verb meta 'vérifier'
* -> Verify;
[ CommandsOnSub;
......@@ -1902,16 +1897,16 @@ Global scope_cnt;
if(PrintVerb(p_v)) return;
#IfV3;
switch(p_v) {
'deverrouiller': print "déverrouiller"; return;
'déverrouiller': print "déverrouiller"; return;
'enlever': print "enlever"; return;
'inserer': print "insérer"; return;
'insérer': print "insérer"; return;
'prendre': print "prendre"; return;
'retirer': print "retirer"; return;
'verrouiller': print "verrouiller"; return;
}
#IfNot;
switch(p_v) {
'deverrouiller': print "déverrouiller"; return;
'déverrouiller': print "déverrouiller"; return;
'verrouiller': print "verrouiller"; return;
}
#EndIf;
......
This diff is collapsed.
......@@ -53,23 +53,29 @@
System_file;
!FRENCH
#IfV3;
#Ifv3;
Include "translation_v3.h";
#IfNot;
#IfDef AVEC_ACCENTS;
Include "translation.h";
#IfNot;
Include "translation_v3.h";
#EndIf;
#EndIf;
Include "messages.h";
! ######################### Include utility files
Include "scope.h";
#IfV3;
#Ifv3;
Include "grammar_v3.h";
#IfNot;
#IfDef AVEC_ACCENTS;
Include "grammar_accents.h";
#IfNot;
Include "grammar.h";
#IfNot;
Include "grammar_v3.h";
#EndIf;
#EndIf;
......
......@@ -8,8 +8,8 @@
System_file;
!FRENCH
! From library 6.12
! To protect against a bug in early versions of the "Zip" interpreter:
! Of course, in Glulx, this routine actually performs work.
[ Tokenise__ b p; b->(2 + b->1) = 0; @tokenise b p; ];
[ PrintToBuffer str;
......@@ -65,7 +65,6 @@ System_file;
LTI_Insert(at, ' ');
];
#IfDef AVEC_ACCENTS;
[ DecolleApostrophe motn at lgm; !TODO ssi l' ou d' ?
at = PosMot(motn) + 1;
lgm = WordLength(motn);
......@@ -73,33 +72,10 @@ System_file;
LTI_Insert(++at, ' ');
else rfalse;
];
#IfNot;
[ SupAccents motn at lgm r;
!r=0
at = PosMot(motn);
lgm = WordLength(motn) + at;
for ( : at < lgm : at++) {
switch (buffer->at) { !TODO optimiser classement
''': ++r; LTI_Insert(++at, ' ');
0 to 127:; ! ZCSII (ASCII)
'à','â','ä': buffer->at = 'a';
'ç': buffer->at = 'c';
'è','é','ê','ë': buffer->at = 'e';
'î','ï': buffer->at = 'i';
'ô','ö': buffer->at = 'o';
'ù','û','ü': buffer->at = 'u';
'ÿ': buffer->at = 'y';
}
}
return r;
];
#Endif;
[ Translation n i w1 w2 r;
!r = 0;
n = NbMotPhrase();
#IfDef AVEC_ACCENTS;
for (i=1: i<=n: i++) {
w1 = DicMot(i);
if (w1 == 0) { ! WARNING si >= 9 ou 6
......@@ -110,36 +86,6 @@ System_file;
}
}
}
#IfNot;
for (i=1: i<=n: i++) {
w1 = DicMot(i);
if (w1 == 0) { ! WARNING si >= 9 ou 6
r = SupAccents(i);
! if (r) {
n = n + r;
Tokenise__(buffer, parse);
! }
continue;
}
#IfDef DE_A_JOUER;
if (w1 == 'de') {
r = PosMot(i) + 1;
if (i == n) {
parse-->(i*2-1) = 'dé';
buffer->r = 'é';
}
else {
w2 = DicMot(i+1);
if (w2 && (w2->#dict_par1) & 8) {
parse-->(i*2-1) = 'dé';
buffer->r = 'é';
}
}
}
#EndIf;
}
#EndIf;
if (n == 1) return;
w1 = parse-->1;
......
......@@ -8,8 +8,14 @@
System_file;
!FRENCH
[ PosMot motn; return parse->(motn*4+1); ]; ! WordAddress-buffer
[ DicMot motn; return parse-->(motn*2-1); ]; ! WordValue
#Ifv5;
! To protect against a bug in early versions of the "Zip" interpreter:
[ Tokenise__ b p; b->(2 + b->1) = 0; @tokenise b p; ];
#EndIf;
[ LanguagePronom w;
switch (w) {
'-l^': print "l'";
......@@ -31,6 +37,7 @@ System_file;
return (motn - 1);
];
#Ifv3;
[ DictWord at lgm w i j len_dic;
len_dic = (dict_end-dict_start)/dict_entry_size; !TODO Global
if (lgm>6) lgm = 6;
......@@ -86,7 +93,17 @@ System_file;
}
else return 0;
];
#IfNot;
[ DecolleApostrophe motn at lgm; !TODO ssi l' ou d' ?
at = PosMot(motn);
lgm = WordLength(motn);
if (lgm > 1 && buffer->(at+1) == ''') {
if (buffer->at == 's' or 'd') buffer->at = 'e';
LTI_Insert(at+2, ' ');
}
else rfalse;
];
#EndIf;
[ Translation n i w1 w2 r;
!r = 0;
n = NbMotPhrase();
......@@ -95,8 +112,17 @@ System_file;
w1 = DicMot(i);
switch(w1) {
0:
#Ifv3;
r = DecolleApostrophe(i);
if (r) n++;
#IfNot;
r = DecolleApostrophe(i);
if (r) {
n++;