Anatomie d'un compilateur
Anatomie d'un compilateur et le Tokenizer
1) Théorie de la langue
Table des matières
Théorie linguistique de base
Syntaxe
Sémantique
Forme normale de Chomsky
Extended Backus Naur
Langages informatiques
Retour à la première page de l'article sur la théorie du compilateur
Théorie linguistique de base
Un compilateur est un programme qui traduit une langue à l'autre. La langue cible, c'est la sortie du compilateur, est souvent langage assembleur ou du code objet, mais ce n'est pas nécessairement le cas.
Beaucoup de compilateurs convertissent un langage de haut niveau à un autre langage de haut niveau. Un exemple remarquable en est cfront, l'UNIX compilateur C + +, ce qui se traduit C + + en C. La sortie du langage C est ensuite introduit dans cc, la norme UNIX compilateur C, qui produit du code de l'objet. Un autre exemple d'un compilateur qui convertit d'un langage de haut niveau à l'autre est l'extrémité arrière de la balise. (Le journal de Magnus Rimvall sur balise sera affiché sur le site Web de James Alan Farrell dans un proche avenir. Quand il s'agit d'un lien sera fourni ici.)
Pour écrire un programme qui effectue une traduction d'une langue, cette langue doit d'abord être défini avec précision et exactitude. Par précisément, nous entendons tous les aspects du langage doivent être énoncées.
Si un aspect de la langue n'est pas définie, les auteurs du compilateur seront eux-mêmes pour comprendre ce qu'il faut faire, et chaque compilateur faire ces choses différemment. La langue ne sera pas portable. Par précision, on entend que la langue doit être définie uniformément dans les moindres détails. Tous les détails laissés undefined ou en conflit conduira writers de compilateur à chaque résoudre les problèmes à leur manière. Encore une fois, ce qui conduit à une langue qui n'est pas portable.
Afin de créer un langage qui répond à ces critères, nous devons développer le concept du langage dans un sens mathématique formelle. Il