Compilator

Un compilator es un programma de computator qui prende codice fontal (in anglese: source code) e lo traduce in un linguage de programmation plus fundamental. Iste linguages plus simple es linguage de assemblea (assembly language) o codice de machina (machine code). Le action de traducer le codice de alte nivello es appellate compilation. Le codice qui ha essite simplificate es appellate codice compilate.

Pro plure programmatores, usar un compilator es plus facile que scriber le codice de machina a causa que il ha plure differente codices de machina (il pote prender un longe tempore scriber pro cata del codices de machina). Per exemplo, le GNU C Compiler compila C in codice de machina.

 Compilation del linguage 
Le codice fontal de un programma de computator es legite per un analysator lexical qui scinde le texto in parolas e symbolos cognoscite como "tokens". Le "tokens" es analysate per un analysator syntactic (parser) qui cerca patronos grammatic in le uso del "tokens". Le analysator syntactic collige le datos de linguage pro un generator de codice intermedie pro converter le datos in iste forma de codification. Un optimisator (optimizer) lege le codice intermedie, qui esseva generate ab le datos del analysator syntactic, e simplifica o omitte codice supernumerari, scribente un texto in linguage plus efficiente, qui es alora cambiate in codice de machina del computator de objectivo.

 Variantes 
Al fin de cata passo de compilation le producto partial finite poteva esser immagazinate e alora solmente processate plus tarde. Linguages como Java usa isto succeditemente, ubi illos care le passo del traduction final pro instructiones que le processator comprende. Illos solmente face le passo del traduction final un vice que le programma in Java es currente super un computator. Isto es appellate interpretation o facer JIT (compilation just-in-time), dependente del technica usate.

 Exemplo 
Per exemplo, le codice fontal poterea continer un equation, como "x = 5*10 " (lo qui es de facto un assignamento). Le analysator lexical separarea cata numero e symbolo (como "*" o "+") in "tokens" separate. Le analysator syntactic notarea le patrono de "tokens", como essente un equation. Le generator de codice intermedie scriberea un forma de codification qui defini un variabile de immagazinage nominate "x" e assigna le producto numeric de 5*10 plus 6 e 1. Le optimisator simplificarea le calculation, de 5*10+6+1, como essente justo 57. In consequentia, le generator de codice de machina collocarea un variabile nominate "x" e pone le valor 57 in iste loco de immagazinage in le memoria de computator, usante le instructiones de qualcunque chip de computator qui es usate.

Categoria:Compilatores