Skip to content

guldemirel/c-syntax-highlighter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Real-Time Grammar-Based Syntax Highlighter

  1. 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.

  1. 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 )

  1. 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
  1. 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) { ... }
  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
  1. 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
  1. 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.

📽️ Demo Videosu

👉 YouTube - Proje Tanıtım ve Demo Videosu

📄 Makale

👉 Medium - Proje Geliştirme Süreci ve Teknik Detaylar

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages