Je ne sais pas si vous avez vu, mais j'ai fait un portage d'un interpréteur/compilateur de Golem sur Nspire, disponible ici.
Je suis actuellement en train de l'améliorer, et je rencontre un problème vraiment bizarre.

- Code: Select all
println("Enter two values:")
print("V1: ")
let v1 = parseFloat(getline())
print("V2: ")
let v2 = parseFloat(getline())
C'est à dire que le
print("V1: ")
est affiché après l'exécution des getline()
, de même pour le print("V2: ")
.En faisant quelques tests sur les implémentations des fonctions
print(
et println(
, j'ai remarqué qu'en remplaçant le print
par un println
, cela s'affichait bien dans l'ordre.C'est donc la ligne
putchar('\n');
qui fait que le texte s'affiche avant ou pas, dans le fichier corelib.c:- Code: Select all
void core_print(vm_t* vm) {
val_print(vm_pop(vm));
vm_push(vm, NULL_VAL);
}
void core_println(vm_t* vm) {
val_print(vm_pop(vm));
putchar('\n');
vm_push(vm, NULL_VAL);
}
Mais je ne comprends pas pourquoi cela ne marcherait pas avec
print
alors que ça marche avec println
.Comment le
putchar('\n');
conditionne l'affichage direct ou non avec val_print?Le code complet est disponible sur github : https://github.com/Ti64CLi/golem-nspire
En espérant que quelqu'un puisse m'aider,
Ti64CLi++