CodeBlanks Logo Icon CodeBlanks

Özet - Derleyici temelleri

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

main.c
#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

main.c
#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

Uzman bölümündeki tüm dersler