Langage
Dans le cadre de ce cours, nous utiliserons le langage C, très utilisé dans le monde de l'informatique. Pour construire un programme en C, il faut écrire un code source en respectant la grammaire du langage C
Grammaires et langages
Dans les langages des humains, la grammaire (syntaxe) permet de construire des phrases, la sémantique donne un sens à ces phrases.
C'est la même chose pour les langages informatiques. La syntaxe des langages de programmation est très rigide et dispose d'un vocabulaire limité.
Le programmeur doit connaître les éléments de syntaxe qui lui sont nécessaires pour programmer. Une grammaire peut se décrire à l'aide du quadruplet :
(VT, VN, Symbole distingué, règles)
-
VT : vocabulaire terminal
-
VN : vocabulaire non terminal
-
Symbole distingué : un élément du vocabulaire non terminal qui sert de point de départ pour l'analyse syntaxique.
-
Règles : ensemble des règles à appliquer pour déterminer si ce que l'on soumet à l'analyse est correct.
La syntaxe du langage C peut se décrire à l'aide d'un ensemble de diagrammes de CONWAY. Il s'agit d'une représentation graphique de la grammaire.
Ils permettent de vérifier si la syntaxe que l'on utilise est correcte pour le compilateur C. Un diagramme porte un nom.
Il comporte des flèches qui relient des boites carrées et des boites arrondies (ovales ou cercles) dans lesquelles sont inscrits des noms ou des symboles. Les boites arrondies (ovales ou cercles) correspondent à un mot du vocabulaire terminal (ou symbole terminal).
Si la boite arrondie est grisée alors le nom inscrit correspond à des symboles terminaux évidents que l'on ne détaille pas.
Des mots du langage C comme « main » ou « void » sont des mots du vocabulaire terminal. Ces mots sont des mots réservés du langage C qui ne peuvent pas être utilisés par le programmeur pour servir d'identificateur par exemple.
Les boites carrées correspondent au VN, vocabulaire non terminal. Le mot que contient une telle boite correspond au nom d'un autre diagramme de CONWAY qui existe forcément.
Le symbole distingué en C correspond au diagramme de programme.
Pour vérifier si la syntaxe d'un programme C est correcte il faut partir de là. Et soumettre à l'analyse le texte du programme écrit. Un programme est donc un fichier. Il faut chercher le diagramme de fichier :
et continuer de suivre les diagrammes jusqu'à obtenir une analyse complète sans bloquer dans un seul diagramme.
Par exemple, on peut se demander si notre premier programme C (vu au chapitre 1 et que nous rappelons ci-dessous) est un fichier.
void main ()
{
printf ("Ceci est votre premier programme\n");
}
Sachant qu'il ne comporte ni définition de type ni déclaration de variable, nous devons déterminer s'il comporte une fonction.
Il faudrait donc soumettre le texte au diagramme de CONWAY de "fonction" pour savoir si la fonction 'main' est syntaxiquement correcte.
La réponse est oui.
C'est donc un fichier. Notre premier programme en C est donc un fichier, c'est donc bien un programme.
L'analyse syntaxique est un succès quand on revient au symbole distingué et que l'on sort du diagramme de CONWAY associé sans avoir rencontré d'erreur.
Ce mécanisme, dit de dérivation, correspond à l'application graphique des règles de grammaire.
Autre exemple : le diagramme de CONWAY d'identificateur est :
Ce qui correspond exactement à ce que nous avons défini précédemment sous forme de phrases.
Lettre et chiffre correspondent à des symboles terminaux évidents que l'on ne détaillera pas.
Le compilateur C vérifie si la syntaxe de votre programme est correcte. Si la compilation échoue, elle ne l'est pas. Les diagrammes de CONWAY du langage C sont fournis en document annexe.
Ils pourront vous aider à trouver vos erreurs.
Différents éléments de base de la syntaxe du C vous seront donnés dans les autres chapitres ainsi que leurs sens (sémantique).
Nous ne serons pas exhaustifs dans ce cours introductif, nous ne pourrons pas explorer toutes les possibilités du C que l'on peut retrouver dans les diagrammes.
N. B : Les directives de pré-compilation ne sont pas analysables avec les diagrammes fournis. Ils ne concernent que le compilateur.