Skip to content

Latest commit

 

History

History
137 lines (114 loc) · 6.24 KB

File metadata and controls

137 lines (114 loc) · 6.24 KB

FEYZ Programming Language

FEYZ is a programming language that uses Turkish keywords, making programming more accessible to Turkish speakers.

English | Türkçe

English

Overview

FEYZ is a programming language designed with Turkish keywords, allowing Turkish speakers to code in their native language while learning programming concepts.

Features

  • Turkish keywords for better accessibility
  • Dynamic variable declaration
  • Type casting support
  • Mathematical operations
  • Comparison and logical operators
  • Conditional statements (if-else)
  • Loops
  • Functions
  • Block structure with curly braces
  • Optional semicolons

Building

make

Usage

# To run a FEYZ program:
./feyz program.feyz

Examples

Check the ornekler/ directory for example FEYZ programs.

Data Types

  • Numbers (integers and floating-point)
  • Text (string)
  • Boolean (true/false)
  • Lists/Arrays

Implementation Status & Roadmap

Core Features

Feature Status Description
Variable declaration and assignment ✅ Available Supported through AssignmentNode class and Environment class define/assign methods
Mathematical operations ✅ Available Supported through BinaryOpNode class and Value class operator methods (+, -, *, /, %)
Comparison operators ✅ Available Comparison operators (==, !=, <, >, <=, >=) defined in Value class
Logical operators ✅ Available VE (and), VEYA (or), DEGIL (not) operators defined in lexer and parser with special handling
Conditional statements (if-else) ✅ Available Supported through IfNode class and ifStatement method in parser
Loops ✅ Available Supported through LoopNode class and loopStatement method in parser
Functions ✅ Available Supported via FunctionNode, UserFunction and NativeFunction classes with recursive function support

Data Types

Type Status Description
Dynamic variable typing ✅ Available Value class supports different types with no explicit type declaration needed
Type casting ✅ Available Supported through CastNode class and Value::cast method
Numbers (integer and float) ✅ Available Supported via NumberNode class and Value::Type::NUMBER
Text (string) ✅ Available Supported via StringNode class and Value::Type::STRING
Boolean (true/false) ✅ Available Supported via BooleanNode class and Value::Type::BOOLEAN
Lists/Arrays ❌ Planned Not yet implemented

Advanced Features

Feature Status Description
Error handling ⚠️ Partial Basic error handling with try-catch blocks in main.cpp, but no in-language try-catch constructs
Modular structure (imports) ❌ Planned File import mechanism not yet implemented
Object-oriented support ❌ Planned Class definition and object creation not yet implemented
File operations ❌ Planned No built-in support for file read/write operations
Standard library ❌ Planned Standard library for math, string processing etc. not yet implemented

Türkçe

Genel Bakış

FEYZ, Türkçe konuşanlara programlama kavramlarını öğrenirken kendi dillerinde kod yazma imkanı sunan bir programlama dilidir.

Özellikler

  • Türkçe anahtar kelimeler
  • Dinamik değişken tanımlama
  • Tip dönüşümü desteği
  • Matematiksel işlemler
  • Karşılaştırma ve mantıksal operatörler
  • Koşullu ifadeler (eğer-değilse)
  • Döngüler
  • Fonksiyonlar
  • Süslü parantez ile blok yapısı
  • Noktalı virgül opsiyonel

Derleme

make

Kullanım

# FEYZ programını çalıştırmak için:
./feyz program.feyz

Örnekler

Örnek FEYZ programları için ornekler/ dizinine bakabilirsiniz.

Geliştirme Durumu ve Yol Haritası

Temel Özellikler

Özellik Durum Açıklama
Değişken tanımlama ve atama ✅ Var AssignmentNode sınıfı ve Environment sınıfındaki define ve assign metotları ile destekleniyor
Matematiksel işlemler ✅ Var BinaryOpNode sınıfı ve Value sınıfındaki operatör metotları (+, -, *, /, %) ile destekleniyor
Karşılaştırma operatörleri ✅ Var Value sınıfında karşılaştırma operatörleri (==, !=, <, >, <=, >=) tanımlanmış
Mantıksal operatörler ✅ Var VE (ve), VEYA (veya), DEGIL (değil) operatörleri lexer ve parser'da tanımlanmış
Koşullu ifadeler (eğer-değilse) ✅ Var IfNode sınıfı ve parser'da ifStatement metodu ile destekleniyor
Döngüler ✅ Var LoopNode sınıfı ve parser'da loopStatement metodu ile destekleniyor
Fonksiyonlar ✅ Var FunctionNode, UserFunction ve NativeFunction sınıfları ile destekleniyor

Veri Tipleri

Tip Durum Açıklama
Dinamik değişken tanımlama ✅ Var Value sınıfı farklı tipleri destekliyor ve tip belirtme zorunluluğu yok
Tip dönüşümü (casting) ✅ Var CastNode sınıfı ve Value::cast metodu ile tip dönüşümü destekleniyor
Sayı (tam sayı ve ondalıklı) ✅ Var NumberNode sınıfı ve Value::Type::NUMBER ile destekleniyor
Metin (string) ✅ Var StringNode sınıfı ve Value::Type::STRING ile destekleniyor
Mantıksal (doğru/yanlış) ✅ Var BooleanNode sınıfı ve Value::Type::BOOLEAN ile destekleniyor
Liste/Dizi ❌ Planlandı Henüz implementasyonu yapılmadı

Gelişmiş Özellikler

Özellik Durum Açıklama
Hata yakalama mekanizması ⚠️ Kısmi Temel hata yakalama try-catch blokları ile main.cpp'de var, ancak dil içinde try-catch benzeri yapılar yok
Modüler yapı (dosya içe aktarma) ❌ Planlandı Dosya içe aktarma (import) mekanizması henüz implementasyonu yapılmadı
Nesne yönelimli programlama desteği ❌ Planlandı Sınıf tanımlama veya nesne oluşturma mekanizması henüz implementasyonu yapılmadı
Dosya işlemleri ❌ Planlandı Dosya okuma/yazma işlemleri için dil içi destek henüz implementasyonu yapılmadı
Standart kütüphane ❌ Planlandı Matematik, metin işleme vb. için standart kütüphane desteği henüz implementasyonu yapılmadı