Question

Comment le compilateur C / C ++ manipule-t-il le caractère d'échappement ["\") dans le code source? Comment la grammaire du compilateur est-elle écrite pour traiter ce caractère? Que fait le compilateur après avoir rencontré ce personnage?

Était-ce utile?

La solution

La plupart des compilateurs sont divisés en plusieurs parties: le frontal du compilateur est appelé analyseur lexical ou un scanner. Cette partie du compilateur lit les caractères réels et crée des jetons. Il a une machine à états qui décide, à la vue d'un caractère d'échappement, si ce dernier est authentique (par exemple, lorsqu'il apparaît dans une chaîne) ou s'il modifie le caractère suivant. Le jeton est généré en conséquence sous la forme du caractère d'échappement ou d'un autre jeton (tel qu'un onglet ou un saut de ligne) à la partie suivante du compilateur ( l’analyseur ). La machine à états peut regrouper plusieurs caractères dans un jeton.

Autres conseils

Une on note intéressant sur ce sujet. Faire confiance à la confiance [lien PDF] .

Le document décrit une façon dont un compilateur pourrait gérer ce problème avec exactitude: il montre comment le compilateur c-crite-en-c n'a pas de traduction explicite des codes en valeurs ASCII; et comment amorcer un nouveau code d'échappement dans le compilateur afin que la compréhension de la valeur ASCII du nouveau code soit également implicite.

Il échappe généralement au caractère suivant:

  • Dans un littéral chaîne ou littéral, cela signifie d'échapper au caractère suivant. \ a signifie 'alerte' (clignotant sur le terminal, bips ou autre), \ n signifie 'saut de ligne', \ xNUM désigne un nombre hexadécimal par exemple.
  • S'il apparaît en tant que dernier caractère visible avant une nouvelle ligne, que ce soit dans une chaîne ou non (et même dans un commentaire de ligne entière), il agit comme une continuation de ligne: le caractère de nouvelle ligne suivant est ignoré et la ligne suivante est fusionnée avec la ligne en cours.

le caractère d'échappement avec le caractère suivant (comme \ n ) est un caractère unique pour le compilateur C - le scanner le présente à l'analyseur sous forme de jeton de caractère. Les règles de syntaxe spéciales de l'analyseur ne caractère d'échappement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top