Kommentarer
- För bred, åtminstone " Hur fungerar det " del. Det finns hela böcker skrivna om det ämnet.
- sv.wikipedia.org/wiki/Compiler skulle vara Wikipedia-länken som är trivial för hitta, vad undrar du specifikt? Frågan är tillräckligt bred för att jag ' skulle bli frestad att ge det smarta alec-svaret på " Kompilatorer översätter kod från ett språk till ett annat , " eftersom det är den allmänna idén som har många nyanser inom det när man börjar titta på vad det egentligen innebär.
- Ja och jag tror det har besvarats ganska bra.
- Varje förklaring till hur en kompilator fungerar kommer att vara för bred eller för komplicerad. Det ' är ett komplicerat ämne, och kompilatorklasserna var de svåraste datorrelaterade kurserna jag någonsin gått.
- @David Naturligtvis är kompilatorer komplicerade, och du kan inte förklara alla detaljer om hur de fungerar här. Jag är dock säker på att du hade en grundläggande förståelse på hög nivå av vad en kompilator är eller hur den fungerar innan du tog din kompilatorkurs.
Svar
En kompilator är ett program som översätter källkoden för ett annat program från ett programmeringsspråk till körbar kod.
Källkoden finns vanligtvis på ett programmeringsspråk på hög nivå (t.ex. Pascal, C, C ++, Java, Perl, C #, etc.). Den körbara koden kan vara en sekvens av maskininstruktioner som kan köras av CPU direkt, eller det kan vara en mellanrepresentation som tolkas av en virtuell maskin (t.ex. Java-byte-kod).
Kort sagt, en kompilator omvandlar ett program från ett läsbart format till ett maskinläsbart format.
Hur en kompilator fungerar, det är verkligen komplicerat. Det finns böcker och universitetskurser om ämnet. Jag kommer att försöka kort beskriva de viktigaste stegen i processen, men detta kommer att vara en mycket kortfattad översikt.
- Lexing – dela upp programmets text i ”tokens”. Token är ”orden” i programmeringsspråket, såsom identifierare (nyckelord, variabelnamn, funktionsnamn, etc.) eller operatorer (=, *, &, etc.) .
- Parsing – konvertera tokensekvensen till ett parse-träd, vilket är en datastruktur som representerar olika språkkonstruktioner: typdeklarationer, variabeldeklarationer, funktionsdefinitioner, loopar, villkor, uttryck, etc.
- Optimering – utvärdera konstanta uttryck, optimera bort oanvända variabler eller oåtkomlig kod, rulla slingor om möjligt, etc.
- Översätt analysträdet till maskininstruktioner (eller JVM-byte-kod).
Återigen betonar jag att detta är en mycket kort beskrivning. Moderna kompilatorer är väldigt smarta och följaktligen mycket komplicerade.
En kompilator är ett datorprogram (eller uppsättning instruktioner) som omvandlar källkod skriven på ett programmeringsspråk (källspråket) till ett annat datorspråk ( målspråk, ofta med en binär form som kallas objektkod). Den vanligaste orsaken till att man vill omvandla källkoden är att skapa ett körbart program.
Kompilatorer överbryggar källprogram på högnivåspråk med den underliggande hårdvaran. En kompilator kräver: