İçeriğe atla

Ayrıştırıcı (yazılım)

Ayrıştırıcı (İngilizce parser), girdi verilerini (çoğunlukla metin) alır ve girdinin yapısal bir temsilini vererek, süreçte doğru sözdizimini kontrol eden bir veri yapısı (çoğunlukla ayrıştırma ağacı, soyut sözdizimi ağacı veya diğer türlü bir hiyerarşik yapı) oluşturan bir yazılım bileşenidir. Ayrıştırma öncesinde veya sonrasında başka adımlar izlenebilir veya bunlar tek bir adımda birleştirilebilir. Ayrıştırıcı, genelde girilen karakter dizisinden belirteçler oluşturan ayrı bir sözcük tabanlı analiz motorunu takip eder. Ayrıştırıcılar elle programlanabilir veya bir ayrıştırıcı üreteci tarafından otomatik olarak veya yarı otomatik olarak oluşturulabilir. Ayrıştırma, biçimlendirilmiş çıktı üretimlerini tek bir şablonda tamamlama görevi görür. Bunlar, farklı etki alanlarına uygulanabilir, ancak bir derleyicinin girdi ve çıktı aşamaları gibi genellikle bir arada sunulur.

Bir ayrıştırıcıya yapılan girdi genellikle bazı programlama dilindeki metin olmakla birlikte doğal bir dildeki metin ya da daha az kapsamlı metin verileri de olabilir; bu durumda, ayrıştırma ağacı oluşturulmadan, metnin yalnızca belirli bölümleri çıkarılır. Ayrıştırıcılar, scanf gibi çok basit işlevleri, bir C++ derleyicisinin arayüzü veya bir web tarayıcısının HTML ayrıştırıcısı gibi karmaşık programları içerir. Basit bir ayrıştırma sınıfının büyük bir kısmı, düzenli ifadeler ve bir düzenli ifade motoru kullanılarak yapılır; bu da örüntü eşleme ve metin çıkarma işlemine izin verir. Diğer durumlarda düzenli ifadeler ayrıştırmadan önce, lexing adımı (daha sonra ayrıştırıcı tarafından çıktısı kullanılmak üzere) kullanılır.

Ayrıştırıcıların kullanımı girdiye göre değişmektedir.Veri dillerinde, bir ayrıştırıcı, programın HTML veya XML metninde okuma işlemi gibi dosya okuma özelliği olarak bulunur; ancak burada kullanılan diller işaretleme dilleridir. Programlama dillerinde bir ayrıştırıcı, dahili bir programlamanın bazı biçimlerini oluşturmak için bilgisayar programlama dilinin kaynak kodunu ayrıştıran derleyicinin veya yorumlayıcının bir bileşenidir.Çözümleme işlemi derleyici önyüzünde önemli bir adımdır. Programlama dilleri deterministik bir bağlamdan bağımsız dil bilgisi ile belirtilmeye eğilimlidir çünkü bunlar için hızlı ve etkili ayrıştırıcılar yazılabilir. Derleyiciler için, ayrıştırmanın kendisi bir geçiş işlemiyle veya birden çok geçiş işlemiyle yapılabilir (tek geçişli derleyici ve çok geçişli derleyici).

Tek geçişli bir derleyicinin dezavantajları, ileriye doğru geçiş sırasında düzeltme işlemleri için hazırlanan bir denetim mekanizması eklenmesiyle önlenebilir ve girdi olarak verilen kod parçacıklarının mevcut program olanaklarına sahip olduğu durumda düzeltmeler geriye uygulanır.Böyle bir düzeltme mekanizmasının yararlı olacağı bir örnek, GOTO ifadesi verilebilir.Program parçacığı tamamlanıncaya kadar bilinmeyen ve ileriye yönelik bir GOTO ifadesi olduğunu varsayalım. Bu durumda, düzeltmenin uygulanmasıyla, GOTO'nun hedefi tanınıncaya dek ertelenecek ve böylelikle kod parçacığı döngüden çıkarılacaktır.Buna paralel olarak, geriye yönelik bir GOTO'nun düzeltilmesi gerekmemektedir ve bunun için yapılacak bir denetim gereksiz bir kısıtlama gibi görünmektedir.

Bağlamdan bağımsız sözdizimleri, bir dilin tüm gereksinimlerini ne ölçüde ifade edebilecekleri ölçütüyle sınırlıdır.Biçimsel olmayan dillerin hafızası sınırlı olmaktadır.Dil bilgisi, keyfi olarak seçilen bir yapının uzun bir girdinin içerisindeki varlığını hatırlayamaz; Bu duruma örnek olarak, bir değişkenin atıfta bulunulmadan önce tanımlanmasını gerektiren diller verilebilir.Bununla birlikte, bu kısıtlamayı ifade edebilen daha güçlü gramer yapıları ise verimli bir şekilde ayrıştırılamaz. Bu nedenle, istenen dil yapılarının bir üst kümesini baz alan (yani, bazı geçersiz yapıları da dahil eden) bağlamdan bağımsız bir dil bilgisi sayesinde, rahat bir ayrıştırıcı oluşturmak yaygın bir kullanımdır.Bu sayede hem kolay ayrıştırılabilir bir dil oluşturulabilir ve istenmeyen yapılar anlamsal analiz ya da bağlamsal analiz adımında filtrelenebilir.

Örneğin, Python'da aşağıdaki ifade sözdizimsel olarak geçerli bir koddur:

x = 1
print(x)

Bununla birlikte, aşağıdaki kod, bağlamdan bağımsız dil bilgisi açısından sözdizimsel olarak geçer ve önceki ile aynı yapıya sahip bir sözdizimi ağacı üretir; ancak bağlam-duyarlı dil bilgisi açısından sözdizimsel olarak geçersizdir; kullanılmadan önce bu değişkenlerin tanımlanmış olmasını gerektirir:

x = 1
print(y)

Kod parçacıkları ayrıştırma aşamasında analiz edilmek yerine, denetim mekanizması söz dizimi ağacındaki değerleri kontrol ederek ve dolayısıyla kod parçacıklarını anlamsal analizin bir parçası olarak yakalamaktadır: Bağlama duyarlı söz dizimi pratikte genellikle anlambilimsel olarak daha kolay analiz edilmektedir.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Pascal (programlama dili)</span> yüksek seviyeli programlama dili

Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hâlâ yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

Yapısal programlama, programlama dilleri kullanılarak yazılan, mantıksal bütünlük gösteren bloklara (bölümlere) bölünebilirler. Bu yolla uzun ve karmaşık programların, bloklara ayırarak daha kolay biçimde yazılabilmesi mümkün olmaktadır.

<span class="mw-page-title-main">Doğal dil işleme</span> bilgisayar bilimi ve dil bilimi alanı

Doğal Dil İşleme, yaygın olarak NLP olarak bilinen yapay zekâ ve dilbilim alt kategorisidir. Türkçe, İngilizce, Almanca, Fransızca gibi doğal dillerin işlenmesi ve kullanılması amacı ile araştırma yapan bilim dalıdır.

Bilgisayar biliminde, kuyruk özyineleme özel bir özyineleme çeşididir.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

Bilgisayar biliminde, Lexer sözcüksel analiz gerçekleştiren program parçasının adıdır. Türkçede direkt çevirisinin yapılabileceği doğru bir kelime olmayan terimlerden biri denebilir. Sözcüksel analiz kaynak kod üstünde gerçekleştirilen bir eylemdir. Sözcüksel analiz sonucunca kaynak kodun program tarafından incelenip ayrıştırılarak anahtar kelime, operatör ya da tanımlayıcılar gibi her bir ögesinin jeton olarak temsili elde edilir.

Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.

Yorumlayıcı, yazılımı kısım kısım ele alarak doğrudan çalıştırır. Yorumlayıcılar standart bir çalıştırılabilir kod üretmezler. Yorumlama işlemi aşama aşama yapılmadığı için genellikle ilk hatanın bulunduğu yerde programın çalışması kesilir.

Sözdizim, söz dizimi ya da Fransızcadan ödünçleme biçimiyle sentaks, doğal dillerdeki cümle kurma ilke ve kurallarını inceleyen ve bu dildeki cümlelerin esnekliğini inceleyen dilbilim dalıdır.
Eski Yunanca "birlikte düzenleme, dizme" anlamına gelen sentaks terimi dilbilimde, doğal dillerde nasıl cümle oluşturulacağına dair bir kurallar ve prensipler çalışmasıdır. Bir bilim dalına ait olmasına ek olarak “Modern İrlandacanın Sözdizimi"nde olduğu gibi, sözdizim terimi herhangi bireysel bir dilin cümle yapısına hâkim olan kurallara ve prensiplere de doğrudan ilgili olarak da kullanılır. Sözdizim, dilin yatay, yani satır şeklinde dizilen bir sistem olduğunu gösterir. Bu diziliş, sesten, morfemlere, morfemlerden daha büyük öbeklere dilin her seviyesinde mevcuttur. Sözdizimin yalnız cümle seviyesini gösteren bir terim olarak kullanılması doğru ama eksik bir kullanımdır.

<span class="mw-page-title-main">Düzenli ifade</span> bir arama modeli oluşturan karakter dizisi

Düzenli ifadeler veya kurallı ifadeler, bilgisayar bilimlerinde ele alınan metindeki kimi katarların kısa yoldan ve esnek bir biçimde belirlenmesini sağlar. Bu katarlar belli karakterler, kelimeler veya karakter örüntüleri olabilir. Düzenli ifadeler, bir biçimsel dil kullanarak yazılır ve bir düzenli ifade işleyici tarafından yorumlanır. Bir düzenli ifade işleyicisi ya ayrıştırıcı olarak hizmet eden ya da metni inceleyip verilen tarife uygun kısımlarını belirleyen bir programdır.

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

<span class="mw-page-title-main">Yapay zekâya yönelik programlama dilleri listesi</span> Vikimedya liste maddesi

Yapay zekâ araştırmacıları yapay zekâya yönelik programlama dilleri geliştirmişlerdir.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

Yazılım, hümanistik (insani), bilimsel teoriler, yönetim ve organizasyon gibi çeşitli alanlarda kullanılan, yukarıdan aşağıya ve aşağıdan yukarıyanın her ikisi de bilgi işleme ve bilgi sıralama stratejisidir. Pratikte, bir düşünce, öğretim veya liderlik biçimi olarak görülebilirler.

ALGOL 68, çok daha geniş bir uygulama kapsamı ve daha titiz bir şekilde tanımlanmış sözdizimi ve anlambilim hedefiyle tasarlanmış, ALGOL 60 programlama dilinin halefi olarak tasarlanan programlama dilidir.