APLAT(5) Manuel des formats de fichier APLAT(5) NOM aplat – Format de document structuré hiérarchiquement DESCRIPTION aplat est un format de document structuré hiérarchiquement conçu pour être facile à manipuler, aussi bien par un humain que par une machine. C’est le format qu’aplat(1) prend en entrée. Le format aplat est constitué de quatre types d’objet : domaine, atome, étiquette et contenu. Un domaine sectionne un document. Ses limites sont notées par des parenthèses : les parenthèses ouvrante (‘(’) et fermante (‘)’) en marquent le début et la fin, respectivement. Les limites de tout domaine (et plus généralement, de tout object) doivent être contenues à l’intérieur du domaine parent immédiat. Le domaine racine, domaine absolument supérieur en ce qu’il n’a pas de parent et qu’il contient tous les autres domaines, fait exception à la règle. Il va de soi que les parenthèses de tout domaine doivent être équilibrées. Lorsque l’étendue d’un domaine est la même que celle de son parent immédiat, il est possible d’utiliser le raccourcis syntaxique noté par un deux-points (‘:’). Dans cette notation, à gauche du deux-points se trouve le domaine parent et à droite, le domaine enfant. Il est possible d’ajouter de la sorte autant de domaines qu’on le souhaite, et que le permet la quantité mémoire disponible sur le système. Ces deux constructions sont donc équivalentes : (parent (intermédiaire (enfant "Contenu du domaine"))) (parent:intermédiaire:enfant "Contenu du domaine") Une étiquette nomme un domaine. Ce nom correspond au premier atome du domaine, à moins que le raccourcit syntaxique des deux-points ne soit utilisé. En fait, on peut dire que le premier atome contient une étiquette de plus que de deux-points. Ainsi, dans l’exemple ci-dessus, parent, intermédiaire et enfant sont des étiquettes. Le contenu d’un domaine correspond la concaténation de tous les atomes qu’il contient, excepté le premier, qui est l’étiquette. Finalement, un atome est une suite de caractères séparées par des parenthèses ou par des blancs. Sont traités comme des blancs les caractères suivants : l’espace normale (‘ ’), le saut de ligne (‘\n’) et le caractère de tabulation (‘\t’). Il existe trois moyens d’échapper des caractères : l’utilisation de la barre oblique inversée (‘\\’), l’encadrement avec des guillemets droits doubles (‘"’) et l’encadrement avec une suite de trois de ces guillemets (‘"""’). Le caractère d’échappement (‘\’) change l’interprétation des caractères spéciaux. Son effet varie selon le caractère échappé. Les parenthèses, les espaces normaux, les caractères de tabulation, les guillemets et le caractère d’échappement lui-même sont interprétés dans leur sens littéral lorsque ce caractère les précède. Cependant, une nouvelle ligne échappée est ignorée, et l’échappement de tout autre caractère est équivalent à ce même caractère sans échappement. Lorsqu’une chaîne de caractères est placée entre guillemets droits doubles (‘"’), les blancs et les parenthèses recoivent leur interprétation littérale. Le comportement du caractère d’échappement est le même à l’intérieur de guillemets qu’à l’extérieur. Les guillemets n’ont pas à se trouver aux extrémités des atomes mais fonctionnent plutôt comme des commutateurs réglant le mode d’interprétation. Ils fonctionnent en cela comme les guillemets des interpréteurs de commandes Unix. La dernière stratégie d’échappement a recourt à un bloc. Un bloc est délimité par une paire de triples guillemets droits doubles (‘"""’). Les caractères qui se trouvent entre le triplet ouvrant et la première nouvelle ligne (‘\n’), inclusivement, et ceux qui se trouvent entre la dernière nouvelle ligne et le triplet fermant, inclusivement, sont ignorés. Ces caractères ignorés peuvent servir à donner certaines informations à d’éventuels préprocesseurs. Le texte qui se trouve à l’intérieur d’un bloc est interprété verbatim. Une construction spéciale permet d’y inclure une suite de trois guillemets. Il suffit de les faire suivre d’un point d’exclamation (‘!’) Ainsi, les trois constructions suivantes sont équivalentes : (doc (par Un\ bloc\ est\ limité\ par\ la\ suite\ \"\"\"\.)) (doc (par "Un bloc est limité par la suite \"\"\".")) (doc (par """ type=texte Un bloc est limité par la suite """!. """)) VOIR AUSSI aplat(1), plat(5) AUTEURS Selve 25 janvier 2024