Özet - Derleyici temelleri
- C kursu
- Uzman
- Ders 18/47
- 5 dk
Lexer, parser ve AST'yi birleştirerek bir hesap makinesi dili yazarsın.
Özet - Derleyici temelleri
Bu grupta küçük bir derleyicinin beş aşamasını gördün: lexer kaynak metni tokenlara böler, parser tokenlardan ağaç kurar, AST kodun yapısını taşır, codegen ağaçtan komut üretir ve sembol tablosu tanımlayıcıları saklar.
Her aşama bir öncekinin çıktısını alır. Lexer, parser ve codegen ayrı fonksiyonlarla modüler tutulur. Bu yapı C ile derleyici yazmanın temel iskeletidir. Şimdi beş aşamayı birleştiren bir mini görev yazacaksın; her aşamanın çıktısını ekranda göreceksin.
Uygulama Derleyici aşamalarını yazdır
void print_stage(const char *stage, const char *output) fonksiyonunu tanımla; gövdesi printf("%s -> %s\n", stage, output); olsun. main içinde beş aşama için çağır: ("lexer", "tokens"), ("parser", "ast"), ("ast", "tree"), ("codegen", "asm"), ("symbol_table", "names").
Başlangıç kodu
#include <stdio.h>
// print_stage fonksiyonunu tanımla
// beş aşamayı yazdır: lexer, parser, ast, codegen, symbol_table
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
void print_stage(const char *stage, const char *output) {
printf("%s -> %s\n", stage, output);
}
int main(void) {
print_stage("lexer", "tokens");
print_stage("parser", "ast");
print_stage("ast", "tree");
print_stage("codegen", "asm");
print_stage("symbol_table", "names");
return 0;
}Beklenen çıktı
lexer -> tokens parser -> ast ast -> tree codegen -> asm symbol_table -> names
Derleyici temelleri tamam
Tebrikler! Derleyici temellerini bitirdin. Artık kaynak kodu tokenlara bölüp, ağaç kurup, komut üretebilen bir araç iskeleti kurabilirsin. Beş aşamanın sırasını ve her birinin çıktısını biliyorsun.
Bir sonraki grupta güvenlik konusuna geçeceksin: buffer overflow, stack canary, ASLR, format string ve güvenli fonksiyonlar. Orada C programlarının sık yaptığı hataları ve modern derleyici korumalarını göreceksin. Bu öğrendiklerin hem güvenli kod yazmak hem de derleyici çıktısını anlamak için gerekli.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Derleyici aşamalarının sırası nedir?
- parser → lexer → codegen
- lexer → parser → codegen Doğru cevap
- codegen → lexer → parser
- parser → codegen → lexer
Açıklama: Önce lexer, sonra parser, en son codegen çalışır.
2 Beş aşamayı çıktısına eşle
| Kavram | Anlamı |
|---|---|
lexer |
tokenlar |
parser |
ağaç |
ast |
yapı |
codegen |
komutlar |
symbol_table |
isimler |