FireX programlama dili kullanımı ve derleyicisi
Merhaba arkadaşlar. Bu sefer çok ciddi ve zaman alan bir projeyle karşınızdayım. Giden emeği haddi hesabı yok. Bu projem Win32 derleyici. Aynı zamanda bir geliştirme ortamı.
Öncelikle bu projemin de diğer projelerim gibi baştan sona %100 bana ait olduğunu belirtmek isterim. Herhangi bir derleyici, linker, assembler, kütüphane veya dışardan alınmış bir kod parçacığı kullanılmadı. Tamamen bana ait olduğu için özgün bir yapı oluşturdum. Diğer derleyicilere göre daha farklı bir işleyiş hakim. Çalışma prensibini kendi felsefeme göre oluşturdum.
Amacım yeni bir dil, ürün geliştirip bunu piyasaya sürmek değil. Win32 konusunda, kimsenin tek başına yeni bir ürün sürüp rakip olmaya gücü yetmez zaten. Gerekte yok. Bu projeyi yazma amacım kariyer hedefleri yüksek birisi olarak öne çıkartıcı birşeyler sunmak, exelere olan ilgim ve derin sistem programcısı olarak bizzat yaşamak istediğim bazı durumlar ve bu çapta bir projeyle, assembly dilinde karşılaşabileceğim her türlü durumla yüzleşmek istedim. Alacağımı aldım, göreceğimi gördüm. Umarım iş konusunda da aynı getirileri sağlayacak.
Projeyi baştan sona assembly diliyle yazdım. Derleyici boyutu 53 kb. Çıkarttığı exe boyutu ise 3 kb. Yazdığınız koda göre genişliyor.
Form bileşenlerini geliştirme ortamında istediğiniz gibi şekillendirebilirsiniz. Genişletin, gizleyin vs. Bunları da kendi yöntemimle kaydedip okuttum. Derlenen exe de resource bulunmamaktadır.
Yazdığım programlama dili ile form bileşenlerine birçok işlem yapılabiliyor. Fonksiyonlar sayıca pek fazla değil. Bunca işi tek başıma yaptığım için ciddi miktarda yük bindi ve ürün olarak sunulmayacak birşeyin daha fazla geliştirilmesi için de sebep olmadığı için yeterli düzeyde şey ekleyip bıraktım. Fonksiyon eklemek sıkıntı değil ekleyip çıkartırız fakat onlarca fonksiyon koymak için sebep yok.
Neyse ben daha fazla lafı uzatmayayım. Kullanım ve programlama dili kurallarına geçelim. Bayağı yorgunum fakat aylar sonra biten birşeyi hem sabırsızlandığımdan hem de artık bunu görmekten çok sıkıldığımdan bir an önce elimden çıkarmak ve bir süre dinlendikten sonra sıradaki projelerime geçmek istiyorum.
Kullanım
Arayüz için 5 çeşit temel bileşeni ekledim.
Buton, combobox, edit, listbox ve static.
Üstte görülen butonlara tıklayarak forma bu bileşenleri ekleyebilir, sağ ekrandan özelliklerini ayarlayabilirsiniz. Olaylar ekleyebilirsiniz.
Alt bölümde ise bilgilendirme ekranı bulunmaktadır. Hatalı kod satırları ve durumu oradan görebilirsiniz.
Kod ekranı ve form arka arkaya durmaktadır. Üstteki butonları kullanarak kolayca geçiş yapabilirsiniz.
ve son olarakta derle ve çalıştır butonlarımızla derleyip test edebilirsiniz.
Exe derleyicinin bulunduğu klasöre program.exe olarak çıkacaktır.
Programlama dili
Programlama dilinde Türkçe karakterler kullanılabilmektedir. Hatta birçok fonksiyon isminde Türkçe karakterler bulunmaktadır.
Değişken tanımlama
İki çeşit değişken tipini yeterli gördüm.
sayı ve karakter
sayı:
sayı tipinde 4294967295 sayısına kadar sayı tutabilirsiniz. Negatif sayılarla da çalışılabilir.
Kullanım:
sayı abc
sayı abc=234
İster değer atayın ister atamadan değişkeninizi oluşturun size kalmış.
karakter:
karakter tipinde istediğiniz uzunlukta string verilerinizi saklayabilirsiniz.
Kullanım:
karakter[5] abc
üsttekinde 5 karakterlik bir yer açtık.
karakter[5] abc=asd
bunda ise asd stringini abc değişkenine atayarak değişkenimizi oluşturduk.
Değişkenleri program içerisinde başına ! koyarak kullanıyoruz.
!abc=4
!abc=!diğerdeğişken
gibi
aynı zamanda dört işlem yapabilirsiniz.
Örnek:
!abc=!abc+1
!abc=1+3*4/2
!abc=!diğerdeğişken+2*3
gibi
karakter türündeki değişkenlere de string atayabilirsiniz.
!abc=yenistring
gibi. Fakat ayırdığınız alanı taşırmamaya dikkat edin.
Negatif sayılar:
Negatif sayıları sayının önüne e koyarak ifade ediyoruz.
Örnek:
!abc=e2
eksi 2 abc'ye atanır
Bileşenler için;
Yazı atama özelliği (Bileşene yazı atamanızı sağlar)
Örnek:
buton1.yazı=deneme
button1.yazı=!değişkenadı
edit1.yazı=firex
edit1.yazı=!değişkenadı
Pozisyon ayarlama (İstediğiniz kordinatlara bileşeni taşıyın)
button1.pozisyon(24,43)
button1.pozisyon(!x,!y)
Boyut ayarlama
button1.boyut(50,100)
button1.boyut(!genişlik,!yükseklik)
Aktif pasif yapma
button1.aktif
button1.pasif
Gizleme, görünür yapma
button1.göster
button1.gösterme
Bu üsttekileri tüm bileşenlerde uygulayabilirsiniz.
Listbox'a eleman ekleme
listbox1.lbekle=elemanyazı
listbox1.lbekle=!eklenen
Combobox'a eleman ekleme
combobox1.cbekle=elemanyazı
combobox1.cbekle=!eklenen
Listbox'dan eleman silme
listbox1.lbsil=1
1. elemanı siler
Combobox'dan eleman silme
combobox1.cbsil=1
Diğer fonksiyonlar
kapat:
Kullanım:
kapat
ve
mesaj kutusu:
Kullanım:
mesajkutusu(başlık,deneme)
mesajkutusu(!başlık,!yazı)
mesajkutusu(deneme,!yazı)
Olaylar
programaçılırken:
Program açılırken çalışmasını istediğiniz komutları yazıyoruz.
Örnek:
programaçılırken
mesajkutusu(test,deneme)
olayson
olayson tüm olaylar için bitirme tagı.
programkapanırken:
Program kapanırken çalışacak komutlar.
Örnek:
programkapanırken
mesajkutusu(test,deneme)
olayson
Önemli not: Yazdığınız kodları olay tagları içerisine almazsanız, kodlar olay döngüsü içerisinde sürekli çalıştırıldığından bazı durumlarda henüz bileşenler o anda hazır olmadığı için probleme yol açabilir. Bu sebeple program açılırken, butona tıklayınca gibi olaylar içerisine alırsanız bu durumda sıkıntı yaşamazsınız. Zaten olay döngüsü içine almamak için bir sebepte yok. Sadece o imkanı sağlamak istedim.
tıklayınca:
Bileşene tıklandığında çalışır. Fakat bunun kullanımı biraz daha farklı.
Örnek
tıklayınca
button1
kapat
olayson
button2
mesajkutusu(deneme,deneme)
olayson
olayson
Görüldüğü üzere tıklayınca olayı bir üst kısımda bileşen isimlerini içine alacak şekilde duruyor. Burası yapılması gereken tıklayınca olayını açıp kapamak ve içerisine hangi bileşen kullanılacaksa koymak
Örnek:
button1
kapat
olayson
seçildiğinde:
Seçim yapıldığında gerçekleşir.
Örnek:
seçildiğinde
combobox1
kapat
olayson
olayson
değiştiğinde:
Edit bileşenindeki yazı değiştiğinde gerçekleşir.
Örnek:
değiştiğinde
edit1
kapat
olayson
edit2
mesajkutusu(deneme,deneme)
olayson
olayson
lbseçildiğinde:
Listbox seçimi yapıldığında gerçekleşir.
Örnek:
lbseçildiğinde
Listbox1
kapat
olayson
olayson
lbseçimdeğişim:
Listbox seçimi değiştiğinde gerçekleşir.
Örnek:
lbseçimdeğişim
Listbox1
kapat
olayson
olayson
Şartlar:
Değişken sayı, sayı değişken, sayı sayı, değişken değişken karşılaştırmaları yapabilirsiniz.
>, <, >=, <=, =
büyüktür, küçüktür, büyük eşittir, küçük eşittir ve eşit olmak üzere hepsini kullanabiliyoruz.
Şartları iç içe kullanabilirsiniz.
Örnek:
şart(2
mesajkutusu(deneme,deneme)
şartson
şart(2>4)
mesajkutusu(deneme,deneme)
şartson
şart(!a
mesajkutusu(deneme,deneme)
şartson
şart(2
mesajkutusu(deneme,deneme)
şart(!asd mesajkutusu(test,test)
şartson
şartson
...
Şartları kapatırken şartson tagını kullanıyoruz.
Döngü:
Şartlı döngü bulunmakta. Şart gerçekleştiği sürece döner. Şart ın desteklediği tüm karşılaştırmaları yapar ve işi bitince
döngüden çıkar.
Örnek:
döngü(!sayi<15)
messagebox(deneme,test)
!sayi=!sayi+1
döngüson
Fonksiyonlar:
İsterseniz kendi fonksiyonunuzu oluşturabilirsiniz.
Örnek:
fonksiyon abc
!a=!a*2
!b=2+3+!a
fonkson
Fonksiyonu çağırmadan önce üstünde tanımlıyoruz ve fonkson tagıyla kapatıyoruz.
çağır fonksiyonismi şeklinde çağırabilirsiniz.
Örnek:
fonksiyon abc
!a=!a*2
!b=2+3+!a
fonkson
...
çağır abc
Önemli hata mesajları
"Değişken bloğu bulunamadı"
"Kod bloğu bulunamadı"
"Kod bloğu kapatılmadı"
Her zaman program iskeleti ilk açıldığı şekilde olduğu gibi
değişkenler
kodlar
son
kalmalıdır. Bu taglar bulunmalıdır.
değişkenler bloğu ilk satırda olmalıdır.
"Bileşen bulunamadı." hatası alırsanız bileşen eklemelisiniz.
"Kapanmayan blok bulunmakta" hatası alırsanız kapatmadığınız şart, döngü, olay vs bulunmakta. Blokların olaysa olayson, şartsa şartson şeklinde kapanması önemlidir.
ve bunun gibi birçok uyarı, hata mesajı bulunmakta. Birçok hata olasılığı ekledim. Fakat tüm olasılıkları da eklemedim. Çok absürd hatalarda programı veya derleyiciyi çökertebilirsiniz. Fazlasıyla sapıtırsa derleyiciyi kapatıp tekrar açınız. Özellikle kurallar delinmeye çalışılırsa bir şekilde bunlar gerçekleşebilir.
Programlama dili satır satır işletilmektedir. Tek satır içerisinde gereksiz boşluk kullanmayınız.
Şimdilik diyeceğim bu kadar. Eğer denerseniz, hatalı koddan doğan problemlerden öte hatasız ve çalışması gereken kodlarda bug çıkarsa bildirirseniz memnun olurum. Yazdığınız kodu buraya yapıştırıp olanları yazınız.
Bunun dışında derleyici hakkında veya bu konular hakkında sorularınız varsa bu konuda alabilirim.
Sizden ricam lütfen indirmeden önce kullanımı gözden geçiriniz.
ve böylelikle bir projenin daha sonuna geldim. Dediğim üzere iş, tecrübe odaklı birşey olduğu için daha fazla geliştirmeyeceğim. Fakat bildirdiğiniz bugları şu günden 3 gün sonraya kadar düzelteceğim. Daha fazla bununla uğraşmak istemiyorum. Artık bunu görmekten inanın midem bulanır hale geldi. Bir süre kafamı dinleyip diğer projeme geçeceğim. Diğer projede görüşmek üzere...
Örnek programlar
Program1:
İlk olarak forma iki tane buton atınız.
Kod:
değişkenler
karakter[7] abc=deneme
karakter[5] asd=test
kodlar
tıklayınca
button1
mesajkutusu(!abc,!asd)
olayson
button2
kapat
olayson
olayson
son
Program2:
Programa bir adet buton atınız.
Kodlar:
değişkenler
sayı !x=0
sayı !y=0
kodlar
tıklayınca
button1
döngü(!x<200)
button1.pozisyon(!x,!y)
!x=!x+1
!y=!y+1
döngüson
olayson
olayson
son
Program3:
Bir adet buton ve bir adet listbox atınız.
Kodlar:
değişkenler
sayı x=0
karakter[3] eleman=ok
kodlar
tıklayınca
button1
döngü(!x<6)
listbox1.lbekle=!eleman
!x=!x+1
şart(!x=3)
mesajkutusu(yarısı,yarısına geldik)
şartson
döngüson
olayson
olayson
programaçılırken
mesajkutusu(merhaba,merhaba)
olayson
programkapanırken
mesajkutusu(hoşçakal,hoşçakal)
olayson
son
Download linki
Yazar: FireX
Gerçekten güzel sağol
BeğenBeğen