31 lines
2.1 KiB
Markdown
31 lines
2.1 KiB
Markdown
# PR Açıklaması: Parser ve AST Bileşenlerinin Modülerleştirilmesi
|
||
|
||
## Açıklama
|
||
Bu PR, `src/parser/` dizini altındaki devasa `ast.hpp` ve `parser.hpp` dosyalarını mantıksal parçalara ayırarak kodun okunabilirliğini ve bakımını kolaylaştırmayı amaçlar. Kodun işlevselliği korunmuş, sadece dosya yapısı modüler hale getirilmiştir.
|
||
|
||
## Önemli Değişiklikler
|
||
|
||
### 1. AST (Soyut Sözdizim Ağacı) Modülerleştirme
|
||
`ast.hpp` dosyası artık bir **aggregator** (toplayıcı) görevi görüyor ve aşağıdaki yeni dosyalardan bileşenleri dahil ediyor:
|
||
- `ast_node.hpp`: Temel `ASTNode` sınıfı ve `ASTKind` enum'u.
|
||
- `ast_expr.hpp`: `LiteralNode`, `BinaryExpressionNode`, `CallExpressionNode` gibi ifade düğümleri.
|
||
- `ast_stmt.hpp`: `BlockNode`, `IfStatementNode`, `WhileStatementNode` gibi deyim (statement) düğümleri.
|
||
- `ast_decl.hpp`: `FunctionDeclNode`, `VariableDeclNode`, `StructDeclNode` gibi deklarasyon düğümleri.
|
||
- `ast_json.hpp`: JSON serileştirme için yardımcı fonksiyonlar (`childrenToJson`, `jsonEscape` vb.).
|
||
|
||
### 2. Parser Modülerleştirme
|
||
Parser mantığı da benzer şekilde parçalara ayrıldı:
|
||
- `parser_base.hpp`: `Parser` sınıfı tanımı ve üye değişkenleri.
|
||
- `parser_core.hpp`: Pratt Parser ana döngüsü, NUD ve LED mantığı.
|
||
- `parser_decl.hpp`: Fonksiyon, değişken ve struct deklarasyonlarının ayrıştırılması.
|
||
- `parser_stmt.hpp`: Deyimlerin (if, for, while, return vb.) ayrıştırılması.
|
||
|
||
## Teknik Avantajlar
|
||
- **Okunabilirlik:** Binlerce satırlık dosyalar yerine 100-300 satırlık, spesifik görevleri olan dosyalar oluşturuldu.
|
||
- **Bakım Kolaylığı:** Belirli bir dil özelliği (örn. yeni bir deyim tipi) eklendiğinde hangi dosyanın değiştirileceği artık çok daha net.
|
||
- **Derleme Hızı:** (Gelecekte) İncremental build süreçlerinde sadece değişen parçaların derlenmesine olanak sağlar.
|
||
|
||
## Notlar
|
||
- Mevcut tüm testler ve `Final.sqt` gibi örnek dosyaların ayrıştırılması sorunsuz çalışmaya devam etmektedir.
|
||
- Dosya başlıklarındaki DİZİN ve KATMAN bilgileri güncellenmiştir.
|