Chaque métalangage possède sa propre métasyntaxe, composée de symboles terminaux , de symboles non terminaux et de métasymboles . Un symbole terminal, tel qu'un mot ou un jeton, est une structure autonome au sein du langage défini. Un symbole non terminal représente une catégorie syntaxique , définissant une ou plusieurs structures de phrase ou de syntagme valides, constituées d'un sous-ensemble de n éléments. Les métasymboles fournissent des informations syntaxiques à des fins de dénotation dans une métasyntaxe donnée. Les symboles terminaux, non terminaux et métasymboles ne sont pas communs à tous les métalangages.
En général, le métalangage des langages à jetons (formellement appelés « langages réguliers ») ne comporte pas de non-terminaux, car l'imbrication n'y pose pas de problème. L'anglais, en tant que métalangage permettant de décrire certains langages, ne contient pas de métasymboles, puisque toute explication peut être faite en anglais. Seuls certains métalangages formels utilisés pour décrire les langages récursifs (formellement appelés langages hors contexte ) possèdent des terminaux, des non-terminaux et des métasymboles dans leur métasyntaxe.
,, ,- Non-terminaux : représentation symbolique définissant un ensemble de structures syntaxiques autorisées, composé d’un sous-ensemble d’éléments. Les non-terminaux peuvent être désignés en encadrant leur nom par des chevrons.
- par exemple
forme de Backus-Naur désigne les symboles non terminaux en plaçant le nom de la catégorie syntaxique entre chevrons, et les symboles terminaux entre guillemets. Les terminaux ne peuvent jamais figurer à gauche du métasymbole de dérivation . Le corps de la définition, à droite, peut être composé de plusieurs formes alternatives, chaque construction syntaxique alternative étant séparée par le métasymbole forme étendue de Backus-Naur utilise toutes les fonctionnalités de la BNF et introduit deux métasymboles supplémentaires pour des fonctions additionnelles. L'une de ces fonctions permet de désigner une proposition facultative dans une proposition en l'encadrant de crochets. L'autre fonction permet de désigner une proposition qui doit être répétée zéro ou plusieurs fois en l'encadrant d'accolades.- La notation syntaxique de Wirth utilise toutes les fonctionnalités de la notation EBNF, à ceci près que les non-terminaux ne sont pas nécessairement encadrés par des chevrons, mais sont toujours définis à droite de
forme Backus-Naur augmentée ( ABNF) désigne les symboles non terminaux par un nom composé d'un seul mot commençant par une lettre de l'alphabet, servant de nom à la catégorie syntaxique. Les chevrons ne sont pas nécessaires. Les symboles terminaux sont soit indiqués par des guillemets doubles, soit par la structure numérique suivante : un symbole Ada , par exemple, les catégories syntaxiques sont notées en appliquant une police sans empattement en minuscules aux mots ou symboles concernés. Tous les mots ou symboles terminaux, en Ada, sont composés de caractères dont la position de code est comprise entre 16#20# et 16#7E# (inclus). La définition de chaque jeu de caractères est conforme à la norme internationale ISO/CEI 10646:2003. En C et en Java , les catégories syntaxiques sont notées en italique, tandis que les symboles terminaux sont notés en gothique . En J , la métasyntaxe n'utilise aucun métasymbole pour décrire sa syntaxe. En réalité, toutes les explications syntaxiques sont faites dans un métalangage très similaire à l'anglais appelé Dictionary, qui est documenté de manière unique pour J.
Avantage des extensions
L'objectif des nouvelles extensions est de fournir une métasyntaxe plus simple et non ambiguë. En termes de simplicité, la métanotation BNF ne facilite pas la lecture de la métasyntaxe, car les métasymboles d'ouverture et de fermeture y sont trop nombreux. En termes d'ambiguïté, la métanotation BNF génère une complexité inutile lorsque les guillemets, les apostrophes, les signes inférieur à et supérieur à servent de symboles terminaux, ce qui est fréquent. La métasyntaxe étendue utilise des propriétés telles que la casse, la police et la position des caractères pour réduire cette complexité inutile. De plus, certains métalangages utilisent des catégories de séparateurs avec police pour intégrer des fonctionnalités métasyntaxe liées aux conventions de mise en page, fonctionnalités non prises en charge formellement par BNF.