Başlangıç > Diğerleri > FireX programlama dili kullanımı ve derleyicisi

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

www.alpgulec.com/firex.rar

Yazar: FireX

  1. Anonim :D
    27/02/2012, 14:08

    Gerçekten güzel sağol

    Beğen

  1. No trackbacks yet.

Yorum bırakın