Comme plusieurs membres de ce forum sont en train de développer un éditeur pour Panoramic, je ne peux que les encourager, et pour cela, voici mes trois prochaines actions prioritaires. Je vais me concentrer sur elles et tout le reste passera après.
1 - sortir une version instantanée V 0.9.28i2 possédant l'objet
SYNEDIT.
2 - sortir une version de Make_EXE contenant cette version (V 0.9.28i2) et pouvant exécuter un source et signaler une erreur d'exécution.
3 - sortir une nouvelle version du compilateur correspondant à cette version V 0.9.28i2
Voici quelques détails.
Utilisation prévue de l'objet SYNEDITL'objet
SYNEDIT est un éditeur de code source, avec des fonctions de recherche et de remplacement de chaînes de caractères.
Recherche d’une chaîne de caractères:
La fonction
FIND(S$,N,P) recherche et sélectionne la chaine de caractères S$ dans le source de l'objet
SYNEDIT numéro N, à partir de la position P, et retourne la position du dernier caractère de la chaine trouvée ou -1 si la chaine S$ n'a pas été trouvée.
Ainsi, il est facile de rechercher toutes les occurences d'une chaine de caractère en appelant la fonction avec le paramètre P fourni par un appel précédent.
(Pour les panoramiciens attentifs, ce fonctionnement ressemble à celui des fonctions
CURVE_ANGLE ou
CURVE_VALUE, pour lesquelles on appelle une fonction avec le résultat de l'appel précédent).
Remplacement d’une chaîne de caractères par une autre:
La fonction
REPLACE((S1$,S2$,N,P) remplace la chaine de caractères S1$ par S2$ dans le source de l'objet
SYNEDIT numéro N, à partir de la position P, sélectionne la chaine S2$ et retourne la position du dernier caractère de la chaine remplacée ou -1 si la chaine S1$ n'a pas été trouvée.
On peut ainsi facilement faire une boucle pour remplacer toutes les occurences d'une chaine de caractère par une autre, là aussi en appelant la fonction avec le paramètre P fourni par un appel précédent.
L'objet
SYNEDIT permet de colorer et de donner un style aux mots-clés, aux commentaires, aux chaînes de caractères, à la "gouttière" (partie gauche pour la numérotation des lignes) au nombres dans un source, de choisir la taille et la police de caractères.
On spécifie les mots-clés par la commande
ITEM_ADD.
Les délimiteurs de chaîne de caractères sont les guillemets.
L’indicateur de début de commentaire est l’apostrophe. Le saut de ligne marque la fin d’un commentaire.
Pour que les commandes de type chaîne de caractères s’adressent soit aux mots-clés, soit aux commentaires, soit aux chaînes de caractères, soit aux nombres, soit à la gouttière, on "cible" ces commandes:
SYNEDIT_TARGET_IS_KEYWORD : les commandes de type FONT s'adressent aux mots-clés
SYNEDIT_TARGET_IS_COMMENT : les commandes de type FONT s'adressent aux commentaires
SYNEDIT_TARGET_IS_STRING : les commandes de type FONT s'adressent aux chaînes de caractères
SYNEDIT_TARGET_IS_GUTTER : les commandes de type FONT s'adressent à la gouttière (numérotation des lignes)
SYNEDIT_TARGET_IS_NUMBER : les commandes de type FONT s'adressent aux nombres
SYNEDIT_TARGET_IS_OBJECT : les commandes de type FONT s'adressent à tout le source, c'est la redirection par défaut
Un petit exemple pour illustrer:
- Code:
-
SYNEDIT 1:' création d'un objet SYNEDIT
ITEM_ADD 1,"print":' print devient un mot-clé
ITEM_ADD 1,"input":' input devient un mot-clé
ITEM_ADD 1,"combo":' combo devient un mot-clé
SYNEDIT_TARGET_IS_KEYWORD
FONT_COLOR 1,0,0,255:' les mots-clés seront colorés en bleu
FONT_BOLD 1:' les mots-clés seront en style gras
SYNEDIT_TARGET_IS_NUMBER
FONT_COLOR 1,255,0,0:' les nombres seront colorés en rouge
SYNEDIT_TARGET_IS_GUTTER
FONT_ITALIC 1:' les numéros de ligne seront en italique
FILE_LOAD 1,"source.txt":' on charge un source
DIM P
WHILE P<>-1:P=REPLACE("print","imprime",1,P):END_WHILE
' tous les "print" sont remplacés par "imprime"
Modification de Make_EXEJe vais créer une option -r pour que Make_EXE exécute le source spécifié: MAKE_EXE -r "source.bas" H
H est le handle de l'appelant.
Ainsi, en cas d'erreur d'exécution, MAKE_EXE avertit l'appelant en déclenchant un événement utilisateur et en lui passant par exemple le numéro de la ligne et le code de l'erreur (ou d'autres informations) par les paramètres USER_EVENT_LPARAM et USER_EVENT_WPARAM.
L'appelant peut ainsi afficher un message d'erreur et positionner un curseur sur la ligne correspondante dans le source, ou la colorer...
Le compilateurIl contiendra la version actuelle de Panoramic.
Il aura quelques restrictions (qui sont les mêmes que lors de la précédente version) et aussi quelques bugs qui seront à découvrir...