Real-Time Grammar-Based Syntax Highlighter
- Kullanılan Programlama Dili
Proje Python 3 programlama dili ile geliştirilmiştir. Grafiksel kullanıcı ara yüzü için pythonun kendi içerisinde bulunan Tkinter kütüphanesi kullanılmıştır.
- Dilin Grameri (Grammar)
Proje kapsamında C diline benzer yapılar desteklenmektedir:
stmt declaration_stmt | assign_stmt | return_stmt | if_stmt | while_stmt | for_stmt | block declaration_stmt KEYWORD IDENTIFIER = expr ; assign_stmt IDENTIFIER = expr ; return_stmt return expr ; if_stmt if (expr) stmt while_stmt while (expr) stmt for_stmt for (init; cond; update) stmt block { stmt_list } stmt_list (stmt)* expr term ((+|-) term)* term factor ((|/) factor) factor NUMBER | IDENTIFIER | ( expr )
- Lexical Analyzer
- Regex tabanlı çözüm uygulanmıştır.
- tokenize() ve tokenize_with_positions() adl iki farklı tokenizer fonksiyonu kullanılmıştır:
- tokenize(): Parser için sadece (tur, deger) döner.
- tokenize_with_positions(): Renklendirme için konum (start, end) bilgisi de döner.
Token Türleri:
- KEYWORD (int, return, if, while, for, vs.)
- IDENTIFIER
- NUMBER
- STRING
- CHAR
- OPERATOR
- SEPARATOR
- Parser (Top-Down Recursive Descent)
- C dilinin temel yapıları desteklenmektedir:
- Değişken tanımı: int x = 0;
- Atama: x = 1 + 2;
- return ifadesi: return x;
- if / while yapıları ve blok { } içi ifadeler
- for döngüsü: for (int i = 0; i < 10; i = i + 1) { ... }
- Syntax Highlighting (Sözdizimi Renklendirme)
- tokenize_with_positions() fonksiyonu ile token konumlar belirlenir.
- Tkinter Text widget'ında tag_add() ile renklendirme uygulanır.
Renkler (dark theme):
- KEYWORD Mavi
- IDENTIFIER Açık gri
- NUMBER Yeşilimsi
- OPERATOR Kırmızı
- STRING Pembe/Kahverengi
- CHAR Sarı
- SEPARATOR Mor
- GUI
Tkinter kütüphanesinin özelliklerinden metin kutusu (Text widget) kullanılmıştır. Her tuşa basıldığında
- Metin tokenize edilir
- Parser kontrolü yapılır
- Renklendirme uygulanır
- Sonuç
Bu proje, C diline benzeyen bir dil için gerçek zamanlı renklendirme ve sözdizimi analizi gerçekleştiren bir uygulamadır. Kullanıcıya hem görsel hem mantıksal geri bildirim sunar.