===== Installation =====
//En construction//
==== Téléchargement ====
[[download|Téléchargements]]
==== Variables d'environnement ====
L'exécution de W nécessite la présence de 2 variables d'environnement obligatoire et 1 facultative :
* WBIN => donne le répertoire de tous les binaires complémentaires aux binaires du langage : bibliothèques partagées (''*.so'' et ''*.dll''), modules externes ''*.o''. D'éventuels sous-répertoires ne seront pas pris en compte.
* WLIB => donne l'emplacement des programmes W compilés, autonomes et //library//. Pas de sous répertoire.
* WSRC => obligatoire pour la compilation, facultatif pour le run-time. Donne le répertoire de base des sources des programmes, fichiers ''*.w'' : utilisé par l'interpréteur et lors de la compilation (pour les instructions [[reference#include|include]]). Ce répertoire sert aussi au debugger. Si cette variable n'est pas renseignée, il ne sera pas possible d'interpréter les sources, et en mode //debug// le positionnement dans le source originel ne sera pas disponible. A noter que les sources seront recherchés dans l'arborescence présente dans WSRC.
==== Utilisation ====
Pour exécuter un programme W, programme principal et //library//, il faut lancer 3 commandes :
- compilation : le source W est compilé en //assembleur W//, au format texte
- assemblage : l'assembleur W au format texte est compilé en binaire : ce dernier format est celui reconnu par le run-time W
- exécution : le binaire W est interprété par le run-time W. L'appel d'une //library// ne peut se faire qu'avec la version binaire W de la bibliothèque appelée
Nota : les modules appelés par //invoke// sont des librairies partagées au niveau OS (dll sous windows, so sous Unix).\\
Exécutables complémentaires :
* formatage source W : ce programme permet de (re)formater tout un source W, de manière uniforme
* compilateur de règles lex : ce programme compile les règles lex (format du moteur interne de W), pour pouvoir être utilisé dans les programmes W mais aussi dans le run-time W.
=== Compilation ===
>
> Usage: lwc [-WSRC:] [-WLIB:] .w
>
Le compilateur ''lwc'' a besoin de connaître :
* le répertoire contenant les sources, pour trouver le fichier à compiler ''.w'' : variable d'environnement WSRC, ou à défaut la valeur du paramètre -WSRC de la ligne de commande
* le répertoire où mettre le fichier résultat, assembleur W au format texte, variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande
Le compilateur s'arrête à la première erreur rencontrée, en affichant le libellé de l'erreur, la ligne de source concernée et la position de l'erreur.\\
Une fois le programme W compilé sans erreur, un fichier nommé ''.wa'' sera créé dans le répertoire //WLIB//.
=== Assemblage ===
>
> Usage: lwa [-c|u] [-WLIB:]
>
L'assembleur ''lwa'' a besoin de connaître le répertoire où lire le fichier assembleur source et où écrire le binaire w généré : contenu de la variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande. L'assembleur convertit un fichier ''*.wa'' en ''*.wp''\\
L'option '' -c '' à l'assemblage permet de compresser le binaire //wp// généré. Les binaires compressés sont automatiquement pris en charge par le désassembleur (option '' -u '') et par le runtime w (programme ''lw'' ci-dessous).\\
L'assembleur permet également de désassembler un binaire W en produisant le source assembleur au format texte : mettre l'option '' -u '' à la commande. Le désassembleur convertit un fichier ''*.wp'' en ''*.wa''. La règle sur le répertoire WLIB est valable pour le désassemblage, comme pour l'assemblage.
=== Exécution ===
>
> Usage: lw [-d] [-t] [-WBIN:] [-WLIB:] [-WSRC:] [parms...]
>
Le run-time W se lance avec l'exécutable ''lw''. Le run-time W a besoin de connaître :
* le répertoire contenant les binaires de l'OS (librairies utilisées par le run-time), mais aussi les modules sous forme binaire de l'OS (appelés par //invoke//) : variable d'environnement WBIN, ou à défaut la valeur du paramètre -WBIN de la ligne de commande
* le répertoire où lire les binaires W (programme principal, mais aussi les éventuelles //library// W), variable d'environnement WLIB, ou à défaut la valeur du paramètre -WLIB de la ligne de commande
Le run-time W se trouve dans un répertoire présent dans le //PATH// de l'OS, et doit donc être trouvé automatiquement par le shell.\\
Le répertoire contenant le chemin de base des sources (//WSRC//) est facultatif. Il est utile si le debugger doit être utilisé.\\
L'option ''-d'' permet de démarrer le run-time en mode debug sur le programme.\\
L'option ''-t'' permet d'afficher dans la console les instruction assembleur exécutés par le run-time, pour le programme demandé.\\
Le run-time exécute le programme binaire W (l'extension ''.wp'' n'est pas à mettre). A suivre d'éventuels paramètres qui seront utilisés par le programme W (pas par le run-time).
=== Formatage ===
>
> Usage: lwf
>
Le formateur lit le fichier entrée, , le remet en forme puis écrase le fichier origine avec la version formatée.\\
La version formatée est également envoyée sur la sortie standard.\\
Le formatage est fait à la norme //W// :
* indentation par pas de 3 espaces
* les commentaires de fin de ligne, commençant par '';'', sont séparés du code par des espaces pour s'aligner sur un colonage multiple de 8
* les instructions suivantes augmentent le niveau : ''begin library background sub if loop foreach''
=== Compilation lex ===
//En construction//