Interface du compilateur PureBasic
Date de publication : 21 novembre 2009
Par
Comtois
Cet article est la traduction d'un document PureBasic traitant de l'interface de communication du compilateur de PureBasic avec des éditeurs et des scripts.
I. Compatibilité
II. Généralités
III. Sous système et le mode Unicode
III-1. Commandes supportées (depuis la version 4.10)
III-1-1. END
III-1-2. SOURCE<T><FichierSource>
III-1-3. SOURCEALIAS<T><SouceFile Alias>
III-1-4. INCLUDEPATH<T><Chemin>
III-1-5. RESOURCE<T><File>
III-1-6. ICON<T><File>
III-1-7. TARGET<T><FichierCible>
III-1-8. CONSTANT<T><ConstantDefinition>
III-1-9. LINKER<T><FichierCommandeLieur>
III-1-10. COMPILE<T><FlagsList>
III-1-10-1. Réponses du compilateur
III-1-10-1-i. SUCCESS
III-1-10-1-ii. ERROR<T>SYNTAX<T><Source NumeroLigne>
III-1-11. INCLUDEFILE<T><NomFichier><T><NumeroLigne>
III-1-12. MESSAGE<T><Texte>
III-1-13. OUTPUT<T>COMPLETE
III-1-14. FUNCTIONLIST
III-1-15. STRUCTURELIST
III-1-16. INTERFACELIST
III-1-17. STRUCTURE<T><Nom>
III-1-18. INTERFACE<T><Nom>
III-1-19. HELPDIRECTORY<T><NomFonction>
III-3. Remerciements
I. Compatibilité
Nous [la PBTeam] essayons de garder la compatibilité avec les anciennes versions autant que possible,
donc les anciens éditeurs/scripts peuvent encore fonctionner avec les nouvelles versions de PB.
Les exceptions seront inscrites dans ce document fourni avec chaque nouvelle version de compilateur.
Les anciennes versions de PB pour Windows (inférieures à 4.00) utilisaient une Interface qui n'est plus valable pour les versions récentes (supérieures Version 4.00).
Donc, si vous utilisiez cette Interface, il vous faut faire la mise à jour.
II. Généralités
Quand le compilateur est démarré avec l'option /STANDBY (sous
Windows) ou l'option --standby (sous Linux et Mac), il va
attendre les commandes depuis l'entrée standard et répondre
vers la sortie standard. Cela permet de contrôler le
compilateur depuis un langage ou script capable d'accéder
au canal standard du programme.
Sous PB, la librairie 'Process' permet cet échange
d'information.
Les commandes doivent être données sous forme de texte terminé
par un code de retour chariot (code ASCII 13, #CRLF ou #LF).
Il est important de respecter cette syntaxe sinon le compilateur
va mal réagir. La fonction 'WriteProgramStringN()' de la
librairie 'process' assure bien cette manoeuvre.
D'autres langages ont cette même fonction comme fflush() en C.
Une commande doit être écrite en majuscule en début de ligne,
suivi d'éventuels arguments séparés par une tabulation.
(Les tabulations sont Notées <T> dans ce document).
Il ne doit pas y avoir d'espace, sauf s'ils appartiennent à un
des arguments d'une commande.
Excepté au démarrage, le compilateur écrira tout dans la sortie
standard en tant que réponse à une commande envoyée. Donc, vous
avez besoin de vérifier l'arrivée d'une réponse uniquement après
l'envoi d'une commande.
Le retour de réponse dépend donc uniquement du fait que l'on
envoie des commandes. Si rien n'est envoyé, la réponse est une
ligne unique de départ.
Dès le démarrage, le compilateur écrit cette ligne:
STARTING<T><VersionNr><VersionString>
<VersionNr> contient le numéro de version du compilateur sous la forme '4.30'
Cette valeur peut être utilisée pour déterminer quelles commandes
sont supportés par le compilateur.
<VersionString> est la version du compilateur sous la forme
'PureBasic 4.10 (Windows - x86)'.
Ensuite, le compilateur charge ses librairies, et indique la ligne
suivante:
READY
- Le compilateur a fini son chargement initial et est prêt à fonctionner.
ERROR<T><Message>
- Le compilateur ne peut pas fonctionner correctement pour les raisons données dans le message.
ERROR<T>SUBSYSTEM<T><SubsystemName>
- Le compilateur ne trouve pas le sous-système spécifié.
Après le message 'READY', le compilateur attend désormais les
commandes sur le canal d'entrée standard.
Par contre, après un message 'ERROR', le compilateur s'arrête
immédiatement.
III. Sous système et le mode Unicode
Les options de librairie sous-système et d'unicode ne peuvent
être modifiées pendant le fonctionnement du compilateur.
Pour effectuer un tel changement, le compilateur doit être
redémarré. C'est pourquoi ces deux types d'options sont
indisponibles ici. Ces deux types d'options doivent être
spécifiées dans la ligne de commande, au démarrage du
compilateur, au même titre que l'option /STANDBY.
III-1. Commandes supportées (depuis la version 4.10)
III-1-1. END
Ordonne au compilateur de s'arrêter.
Paramètre(s) : Aucun
Réponse(s) : Aucune
III-1-2. SOURCE<T><FichierSource>
Indique au compilateur le nom du fichier source pour la prochaine compilation.
Paramètre(s) : Le nom du fichier source. (Il doit contenir l'intégralité du chemin d'accès)
Réponse(s) : Aucune
III-1-3. SOURCEALIAS<T><SouceFile Alias>
Indique au compilateur le nom du fichier qui sera retourné dans la constante #PB_Compiler_File pour le code source principal à la place du nom de fichier spécifié par la commande SOURCE.
C'est utile pour les éditeurs qui compilent à partir d'un fichier temporaire, mais qui veulent que le fichier source réel soit reporté ici.
Paramètre(s) : Le nom du fichier (doit contenir l'intégralité du chemin d'accès)
Réponse(s) : Aucune
III-1-4. INCLUDEPATH<T><Chemin>
Indique au compilateur quelles instructions de tous les 'FichierDInclusion' seront prises en compte.
Cela permet de mettre le fichier source dans répertoire temporaire en incluant les fichiers relatifs au chemin d'origine.
Si le chemin d'inclusion n'est pas spécifié, le chemin du fichier source est utilisé par défaut.
Paramètre(s) : Le chemin d'accès. Il doit être complet et terminé par un caractère '\' ou '/' (selon l'OS)
Réponse(s) : Aucune
III-1-5. RESOURCE<T><File>
(Pour Windows uniquement) Spécifie un script ressource (*.rc) à inclure dans la compilation.
Paramètre(s) : Le nom de fichier. (doit contenir le chemin complet)
Réponse(s) : Aucune
III-1-6. ICON<T><File>
Spécifie une icône pour l'application.
Paramètre(s) : Le nom de fichier. (doit contenir le chemin complet)
Réponse(s) : Aucune
Types de fichier supportés :
- Windows : *.ico
- MacOSX : *.icns
- Linux : Non supporté
III-1-7. TARGET<T><FichierCible>
Spécifie le fichier cible pour la prochaine compilation.
Paramètre(s) : Le nom de fichier. (doit contenir le chemin complet)
Réponse(s) : Aucune
III-1-8. CONSTANT<T><ConstantDefinition>
Définit une constante pour la prochaine compilation.
Paramètre(s) : La ligne définissant intégralement la constante
Réponse(s) : Aucune. Si la définition venait à créer une erreur, cette erreur n'apparaîtra qu'à la prochaine compilation.
|
C'est la même règle pour l'option /CONSTANT dans la ligne de commande.
Ce qui signifie que la syntaxe doit être du type "NAME=Value" sans le caractère '#' et sans espace autour du signe '='.
Cela signifie aussi que les nombres seront interprétés comme des constantes numériques alors que
toute expression autre qu'un nombre sera considérée comme une constante chaîne.
|
III-1-9. LINKER<T><FichierCommandeLieur>
Spécifie les options de la ligne de commande pour le lieur (Semblable à l'option /LINKER de la ligne de commande).
Paramètre(s) : Un nom de fichier contenant les commandes pour le lieur (doit contenir le chemin complet)
Réponse(s) : Aucune
III-1-10. COMPILE<T><FlagsList>
COMPILE<T><FlagsList>
Démarre la compilation avec un fichier source, un fichier
cible et les drapeaux d'état préalablement spécifiés.
Paramètre(s) : Liste des drapeaux d'état séparés par une
tabulation.
Drapeaux d'état possibles :
- DEBUGGER - Compilateur avec débogueur
- INLINEASM - Autorise l'assembleur en ligne
- DLL - Crée un DLL
- XPSKIN - Active les skins XP (Windows uniquement)
- ADMINISTRATOR - Mode administrateur sous Vista (Windows uniquement)
- USER - Mode utilisateur (Windows uniquement)
- CONSOLE - Crée un exécutable en mode console (Windows uniquement)
- ONERROR - Autorise les instructions de la librairie OnError
- MMX - Crée un exécutable optimisé MMX
- 3DNOW - Crée un exécutable optimisé 3DNOW
- SSE - Crée un exécutable optimisé SSE
- SSE2 - Crée un exécutable optimisé SSE2
- DYNAMICCPU - Crée un exécutable compatible à tous les CPUs
- THREAD - - Crée un exécutable avec sécurisation des threads
- PROGRESS - Indique la progression de la compilation (Cf plus bas)
- WARNINGS - Affiche les messages d'avertissement (Ver 4.30 Cf plus bas)
Exemple: 'COMPILE<T>DEBUGGER<T>THREAD' compilera avec le débogueur et avec la sécurisation des threads.
Après que la commande ait été exécutée (avec ou sans succès), toutes les options (SOURCE, TARGET, ICON, RESOURCE, INCLUDEPATH, CONSTANT, LINKER) seront effacées.
Elles ont donc besoin d'être à nouveau spécifiées par la suite pour une future compilation.
Réponse(s) :
Si le drapeau d'état PROGRESS est spécifié, le compilateur répondra par une ou plusieurs des lignes suivantes :
- PROGRESS<T>INCLUDE<T><FileName> - un nouveau fichier est inclu
- PROGRESS<T>LINES<T><LinesCount> - renseigne de la progression toutes les 1000 lignes ainsi qu'à la fin totale de la lecture
- PROGRESS<T>ASSEMBLING - indique que l'assemblage est accompli
- PROGRESS<T>LINKING - indique que les liens sont accomplis
De nouveaux indicateurs de progression devraient voir le jour à l'avenir,
donc pour assurer la compatibilité future, les lignes de réponse sous la forme
'PROGRESS<T>XXX' et qui ne sont pas comprises doivent être ignorées.
Pour les versions 4.30 et ultérieures, si le drapeau d'état 'WARNINGS' est
spécifié, le compilateur est susceptible d'émettre des messages
d'avertissement. La séquence est comme le modèle qui suit :
WARNING<T><Source NumeroLigne> : Un message d'avertissement est émis pour la ligne donnée.
Ce qui suit est un nombre de lignes d'informations optionnelles terminé par la ligne 'OUTPUT<T>COMPLETE'.
A l'avenir, il pourra y avoir plus de lignes en guise de réponse, donc pour
assurer la compatibilité future, il est recommandé de lire toutes les lignes
jusqu'à ce que la ligne 'OUTPUT<T>COMPLETE' soit atteinte en ignorant
ce qui est non identifiable.
Ce qui suit est un ensemble d'informations optionnelles se
terminant toujours par le signal 'OUTPUT<T>COMPLETE'
A l'avenir, d'autres types de réponse pourront être ajoutées
donc... pour assurer... la compatibilité, il est... recommandé
de lire toutes les lignes jusqu'à ce que la ligne
'OUTPUT<T>COMPLETE' soit atteinte, en ignorant les lignes
qui ne sont pas identifiables.
INCLUDEFILE<T><NomFichier><T><NumeroLigne>
Une erreur s'est produite dans un fichier d'inclusion. Les
arguments donnent le nom de fichier et le numéro de
ligne dans lesquels s'est produite l'erreur.
MACRO<T><ErrorLine><T><TotalMacroLines>
Une erreur a eu lieu dans une macro. Ce qui suit cette ligne
est le contenu de la macro déployée. (<TotalMacroLines>
= nombre de lignes). Cela se termine par une ligne contenant
'MACRO<T>COMPLETE'
<ErrorLine> donne la ligne dans la macro a provoqué une erreur.
MESSAGE<T><Texte>
Le message de l'erreur actuellement décelée.
OUTPUT<T>COMPLETE
Indique la fin de la séquence d'informations sur l'erreur de syntaxe.
Note : Si certain des numéros de ligne ne peuvent pas être
déterminés par le compilateur (par exemple pour les erreurs
qui ne peuvent pas être précisément localisées), le numéro de
ligne retourné sera -1. Donc, vous devez vous attendre à gérer
ce type de valeur.
- ERROR<T>ASSEMBLER
- ERROR<T>LINKER
- ERROR<T>RESOURCE
Une erreur a été détectée durant l'assemblage, le linkage
ou la compilation des ressources de script. Les informations
qui suivent sont alors retournées par le compilateur sous la forme
d'une séquence se terminant par 'OUTPUT<T>COMPLETE'.
III-1-10-1. Réponses du compilateur
Quand la compilation est effectuée, la réponse peut être :
III-1-10-1-i. SUCCESS
La compilation s'est passée correctement.
III-1-10-1-ii. ERROR<T>SYNTAX<T><Source NumeroLigne>
Une erreur a été détectée durant la compilation du code PB.
L'argument <Source NumeroLigne> donne le numéro de ligne où l'erreur s'est produite.
III-1-11. INCLUDEFILE<T><NomFichier><T><NumeroLigne>
L'erreur décelé se situe dans un fichier d'inclusion. Les arguments indiquent donc le nom de fichier et la ligne mise en cause dans le fichier d'inclusion.
III-1-12. MESSAGE<T><Texte>
Le message d'avertissement actuel.
III-1-13. OUTPUT<T>COMPLETE
Indique la fin de la séquence d'avertissement.
III-1-14. FUNCTIONLIST
Demande le listing des fonctions connues par le compilateur.(Fonctions PB + Fonctions librairie utilisateur)
Paramètre(s) : Aucun
Réponse(s) : La première ligne contient le nombre de fonctions. Il y succède une fonction par ligne avec le nom de la fonction et
une brève description (si spécifié durant la création de la librairie). La séquence se termine par 'OUTPUT<T>COMPLETE'.
III-1-15. STRUCTURELIST
Demande le listing des structures connues par le compilateur.
Paramètre(s) : Aucun
Réponse(s) : La première ligne contient le nombre de structures.
Il y succède un nom de structure par ligne.
La séquence se termine par 'OUTPUT<T>COMPLETE'.
III-1-16. INTERFACELIST
Demande le listing des interfaces connues par le compilateur.
Paramètre(s) : Aucun
Réponse(s) : La première ligne contient le nombre d'interfaces.
Il y succède un nom d'interface par ligne.
La séquence se termine par 'OUTPUT<T>COMPLETE'.
III-1-17. STRUCTURE<T><Nom>
Demande le contenu d'une structure connue par le compilateur.
Paramètre(s) : Le nom de la structure
Réponse(s) : La définition de la structure à raison d'un membre
par ligne. La séquence se termine par 'OUTPUT<T>COMPLETE'.
III-1-18. INTERFACE<T><Nom>
Demande le contenu d'une interface connue par le compilateur.
Paramètre(s) : Le nom de l'interface
Réponse(s) : La définition de l'interface à raison d'un membre
par ligne. La séquence se termine par 'OUTPUT<T>COMPLETE'.
III-1-19. HELPDIRECTORY<T><NomFonction>
Demande au compilateur le nom de la librairie d'une fonction spécifiée.
Paramètre(s) : Le nom de la fonction
Réponse(s) : Soit 'API', soit 'UNKNOWN' soit le nom de le librairie spécifiée
III-3. Remerciements
Je tiens à remercier tout particulièrement Ollivier pour cette traduction, je me suis contenté de la mettre en page. ainsi que les membres de la communauté PureBasic pour leur participation à la rédaction de cet article, sans oublier l'équipe PureBasic qui travaille sans relâche pour améliorer ce fabuleux langage.