Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| dev:m4:start [2017/10/19 15:35] – yoann | dev:m4:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ====== M4 ====== | ====== M4 ====== | ||
| - | M4 est un langage de macro développé | + | M4 est la mise en œuvre |
| - | * définir des macros | + | * d'inclure des fichiers, |
| - | * inclure des fichiers | + | * d' |
| - | * Effectuer | + | * Appeler |
| - | * Appeler des programmes externes | + | |
| - | * structures et branchements conditionnels | + | |
| - | ===== Généralités ===== | ||
| - | Les commentaires commencent à partir du caractère | + | Le processeur de macro copie son entrée sur sa sortie en développant les macros internes ou définies par l'utilisateur. |
| - | ===== Définition | + | |
| + | ===== | ||
| + | |||
| + | Lorsque m4 lit le fichier d' | ||
| + | |||
| + | Un nom est une séquence de caractères alphanumériques commençant par une lettre ou le caractère ' | ||
| + | |||
| + | Une chaîne citée est une séquence de caractères encadrée par '' | ||
| + | |||
| + | ^ Entrée | ||
| + | | `essai' | ||
| + | | %%``essai2'' | ||
| + | |||
| + | Les commentaires commencent à partir du caractère '' | ||
| + | |||
| + | Les jetons ne faisant pas parti d'un nom, d'une chaîne citée ou d'un commentaire sont copiés directement sur la sortie. Lorsqu' | ||
| + | |||
| + | |||
| + | ==== Invocation d'une macro ==== | ||
| + | |||
| + | Pas d' | ||
| + | |||
| + | < | ||
| + | # macro_test est invoquée sans argument | ||
| + | macro_test | ||
| + | |||
| + | # macro_test invoquée avec 2 arguments | ||
| + | macro_test(arg1, | ||
| + | |||
| + | # macro_test invoquée avec 1 argument vide | ||
| + | macro_test() | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Une macro définie sans argument s' | ||
| + | </ | ||
| + | |||
| + | La mise en citation d'une chaine peut éviter l' | ||
| + | |||
| + | <file txt test_quote.m4> | ||
| + | define(`macro', | ||
| + | |||
| + | # Le developpement de la macro est concatené aux caractères qui le suivent | ||
| + | # mais la mise en citation des caractères suivant empeche l' | ||
| + | # du nom de la macro interne divert et la chaine " | ||
| + | # en sortie. | ||
| + | |||
| + | macro(`v' | ||
| + | |||
| + | # Sans mise en citation des caractères suivant le nom de macro interne | ||
| + | # " | ||
| + | # | ||
| + | |||
| + | macro(`v' | ||
| + | </ | ||
| + | |||
| + | Tous les arguments d'une macros sont des chaînes de caractères mais certaines pourront être interprétées comme nombre, nom de fichier ou expression rationnelle etc. | ||
| + | |||
| + | Un argument vide n'est pas identique à un argument omis. Un argument omis utilise la valeur définie dans le prototype alors qu'un argument vide utilise explicitement une chaîne vide. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Définition de macro ==== | ||
| La fonction define() permet de définir les macros. | La fonction define() permet de définir les macros. | ||