Filtrer les fonctions n'ayant qu'une seule variable, c'est très simple. Après, c'est tout à fait possible d'avoir une concaténation par exemple, ce qui fait que ton paramètre est plus complexe qu'un seul mot ou qu'une seule variable, mais sinon c'est même hyper simple.Gerauld a écrit :Peux-tu également filtrer les instructions nécessitant une seule variable de type string (celle en contenant plusieurs ne devant pas être traduites)?
J'ai encore quelques petits bugs à corriger dans la construction de l'arbre, puis je m'attaque à cette partie. En pratique, pour le moment, je récupère tous les éléments dits "terminals" (c-à-d une variable, un script, une chaîne, une variable, ...), mais je n'ai aucun moyen de savoir à quoi correspond l'élément. Je ne sais pas trop comment je vais m'y prendre pour le moment, mais cela ne devrait pas être difficile pour certains cas (les chaînes de caractères notamment vu qu'il s'agit des seuls terminals commençant et finissant par le caractère "). Les variables risquent d'être un chouilla plus compliquées.Gerauld a écrit :Peux-tu "pister" une variable utilisée avec une instruction (notification par exemple) et remonter les valeurs qui lui sont assignées et/ou l'endroit et la manière dont elle est définie?
Alors, c'est dur de bosser avec des BDD en VB.Net ?Gerauld a écrit :J'ai fini de bosser sur ma petite base en VB (et quelques fonctions de traitement très simples).
Faudrait que je retrouve un programme permettant de convertir un fichier C#<=>VB. C'est parfois utile pour les personnes ayant quelques difficultés à ce niveau-là.Gerauld a écrit :Je vais donc pouvoir ressortir le C# et les sources de CKPE pour regarder un peu cette semaine (arpès avoir terminé 2/3 trucs pour la Forge).
Sinon, concernant CKPE, il y a clairement des passages plus simples que d'autres. Dans un premier temps, je te déconseille de regarder les interfaces graphiques (tous les fichiers ayant pour extension .xaml) : j'y viendrai quand tu sera un peu plus rôdé au reste du code.
Quelques bon point d'entrées selon moi (pas forcément directement liés à Papyrus cependant):
- la classe Core (responsable de la gestion de l'application en général)
- la classe ScriptManager (responsable de la gestion des scripts : chargement, sauvegarde, listing, etc)
- la classe CompilerService (responsable de ... la compilation
) - la classe LanguageManager (pour la gestion des traductions de l'application)
- la classe Script et tous ses enfants (représentation logique d'un script), sauf la fonction Parse() !!!
- la fonction Parse() de la classe Script (analyse du code et création de la logique du script)
- toute l'interface graphique (gros bout ça)
- la classe PapyrusFoldingStrategy (décrivant le fonctionnement du "pliage" de code)
- la classe CompletionStrategy (décrivant tout le fonctionnement de l'auto-complétion)



