Analyse lexicale

L'analyse lexicale se trouve tout au début de la chaîne de compilation. C'est la tâche consistant à décomposer une chaîne de caractères en unités lexicales, aussi appelées tokens. Ces tokens, "produits" à la demande de l'analyseur syntaxique, sont ensuite "consommés" par ce dernier.

Sommaire

Langage lexical

L'analyseur lexical est défini par un ensemble de règles, généralement appelées expressions régulières. Celles-ci définissent les séquences de caractères possibles qui sont utilisées pour former des tokens ou des léxèmes.

Tout langage reconnu par une expression régulière est appelé langage régulier. A toute expression régulière, on peut associer un automate fini. Il existe également des langages lexicaux non réguliers, qui sont des langages algébriques (c'est-à-dire non contextuels).

Token

Un token est une chaîne de caractères qui correspond à un symbole (exemples : NUMBER, IDENTIFIER, ..). Il est généralement défini par des expressions régulières. On appelle tokenization le processus permettant de former des tokens à partir d'un flux entrant de caractères : l'analyseur lexical identifie les léxèmes de ce flux et les range dans des catégories de tokens. S'il détecte un token invalide, il reporte une erreur.

Généralement, les combinaisons de tokens sont laissées au soin du parser (voir Analyse syntaxique). Par exemple, un analyseur lexical typique reconnaît les parenthèses comme étant des tokens, mais ne s'assure pas qu'une parenthèse ouvrante "(" est forcément associée à une parenthèse fermante ")".

L'étape suivant la phase de "tokenizing" est le "parsing".

Analyseur lexical

On appelle analyseur lexical, lexer, ou encore scanner, tout programme effectuant une analyse lexicale. Il s'agit le plus souvent d'une unique fonction qui sera appelée par le parser (voir Analyse syntaxique) ou par une autre fonction.

Le scanner contient toutes les informations sur les séquences de caractères qui peuvent être contenues dans les tokens qu'il génère. Par exemple, un token de type "INTEGER" peut contenir n'importe quelle séquence de caractères numériques (chiffres).

Son rôle consiste à :

  • éliminer les "bruits" du texte source : commentaires, espaces, …
  • reconnaître les opérateurs et les mots-clés : ⇐, ==, if, …
  • reconnaître les chaînes de caractères, les identificateurs et les constantes numériques

Il produit en sortie un token qui sera utilisé par l'analyseur syntaxique.

Un analyseur lexical peut être écrit :

  • "à la main" : il faut construire l'automate fini non déterministe à partir d'une expression régulière E, puis l'exécuter pour déterminer si une chaîne d'entrée appartient au langage reconnu par E
  • par une table décrivant l'automate et un programme exploitant cette table
  • par un générateur d'analyseurs : flex

Tokenization

Il s'agit du processus permettant de démarquer les différentes sections d'une chaîne de caractères. En effet, un ordinateur n'est pas capable seul de déterminer quels sont les mots d'une phrase ; il n'y voit qu'une chaîne de caractères. Un processus de tokenization consisterait donc à séparer ces mots, selon les espaces.

Articles connexes



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Analyse lexicale de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Analyse Lexicale — L analyse lexicale est la transformation d’un flot de caractères en un flot de lexèmes ou jetons (de l anglais token). Généralement, les lexèmes ont eux mêmes une structure. Ils forment un sous langage. Les techniques utilisées pour l’analyse… …   Wikipédia en Français

  • analyse lexicale — ● loc. f. ►PROG Phase de la compilation lors de laquelle on réunit les symboles en lexèmes (c est à dire en éléments signifiants de base dans une grammaire). Elle est suivie de l analyse syntaxique …   Dictionnaire d'informatique francophone

  • Token (analyse lexicale) — Lexème Le lexème (aussi appelé unité lexicale par le Conseil supérieur de la langue française et de nombreux grammairiens et lexicographes) est le morphème lexical d’un lemme, c est à dire une unité de sens et de son qui n est pas fonctionnelle… …   Wikipédia en Français

  • Analyse Syntaxique — Pour les articles homonymes, voir Analyseur. L analyse syntaxique consiste à mettre en évidence la structure d un texte, généralement un programme informatique ou du texte écrit dans une langue naturelle. Un analyseur syntaxique (parser, en… …   Wikipédia en Français

  • Analyse syntaxique — Pour les articles homonymes, voir Analyseur. L analyse syntaxique consiste à mettre en évidence la structure d un texte, généralement un programme informatique ou du texte écrit dans une langue naturelle. Un analyseur syntaxique (parser, en… …   Wikipédia en Français

  • Analyse morphosyntaxique — En grammaire, analyser un segment de discours consiste à évaluer, d une part la forme (morphologie flexionnelle), d autre part la fonction (syntaxe) de ses éléments constitutifs. Distinguons l analyse traditionnelle de l analyse des groupes… …   Wikipédia en Français

  • Analyse statique de programmes — En informatique, la notion d analyse statique de programmes couvre une variété de méthodes utilisées pour obtenir des informations sur le comportement d un programme lors de son exécution sans réellement l exécuter. C est cette dernière… …   Wikipédia en Français

  • Analyse dynamique de programmes — L analyse dynamique de programmes est une analyse réalisées sur un programme informatique en l exécutant sur un vrai processeur ou un processeur virtuel. Pour que l analyse dynamique de programme produise des résultats intéressants, le programme… …   Wikipédia en Français

  • analyse syntaxique — ● loc. f. ►PROG Phase de la compilation pendant laquelle est vérifiée la conformité vis à vis d une grammaire d une succession de lexèmes . Elle suit l analyse lexicale …   Dictionnaire d'informatique francophone

  • Analyse sémique — ● Analyse sémique analyse visant à établir la composition sémantique d une unité lexicale par la considération des sèmes qui la constituent …   Encyclopédie Universelle

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”