106 votes

Quelle est la différence entre un token et un lexème ?

Dans Compiler Construction de Aho Ullman et Sethi, il est indiqué que la chaîne de caractères d'entrée du programme source est divisée en séquences de caractères qui ont une signification logique, et sont connues sous le nom de tokens et lexèmes sont des séquences qui composent le token donc quelle est la différence fondamentale ?

0voto

user10715886 Points 9

Lexème On dit que les lexèmes sont une séquence de caractères (alphanumériques) dans un token.

Token Un jeton est une séquence de caractères qui peut être identifiée comme une entité logique unique. Les jetons sont généralement des mots-clés, des identificateurs, des constantes, des chaînes de caractères, des symboles de ponctuation, des opérateurs et des nombres.

Patronage Un ensemble de chaînes de caractères décrit par une règle appelée motif. Un motif explique ce qui peut être un jeton et ces motifs sont définis au moyen d'expressions régulières, qui sont associées au jeton.

-1voto

L'analyseur lexical prend une séquence de caractères, identifie un lexème qui correspond à l'expression régulière et le catégorise ensuite en token. Ainsi, un lexème est une chaîne de caractères correspondant et un nom de token est la catégorie de ce lexème.

Par exemple, considérez l'expression régulière ci-dessous pour un identifiant avec l'entrée "int foo, bar ;".

lettre(lettre|chiffre|_)*

Ici, foo y bar correspondent à l'expression régulière et sont donc tous deux des lexèmes mais sont catégorisés comme un seul jeton. ID c'est-à-dire l'identifiant.

Notez également que la phase suivante, c'est-à-dire l'analyseur syntaxique, n'a pas besoin de connaître le lexème mais un jeton.

-2voto

Le lexème est fondamentalement l'unité d'un token et il s'agit essentiellement d'une séquence de caractères qui correspond au token et aide à décomposer le code source en tokens.

Par exemple : Si la source est x=b alors les lexèmes seraient x , = , b et les jetons seraient <id, 0> , <=> , <id, 1> .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X