Bu maddenin veya bölümün , doğrulanamaz veya yoruma dayalı ifadeler içerdiği düşünülmektedir. Lütfen iddiaları ederek ve yeni geliştirin. Özgün araştırmadan oluşmuş ifadeler kaldırılabilir. Ayrıntılar maddenin bulunabilir. |
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 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 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.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Bu maddenin veya bolumun ozgun arastirma dogrulanamaz veya yoruma dayali ifadeler icerdigi dusunulmektedir Lutfen iddialari kontrol ederek ve yeni kaynaklar ekleyerek gelistirin Ozgun arastirmadan olusmus ifadeler kaldirilabilir Ayrintilar maddenin tartisma sayfasinda bulunabilir Ayristirici Ingilizce parser girdi verilerini cogunlukla metin alir ve girdinin yapisal bir temsilini vererek surecte dogru sozdizimini kontrol eden bir veri yapisi cogunlukla ayristirma agaci soyut sozdizimi agaci veya diger turlu bir hiyerarsik yapi olusturan bir yazilim bilesenidir Ayristirma oncesinde veya sonrasinda baska adimlar izlenebilir veya bunlar tek bir adimda birlestirilebilir Ayristirici genelde girilen karakter dizisinden belirtecler olusturan ayri bir sozcuk tabanli analiz motorunu takip eder Ayristiricilar elle programlanabilir veya bir ayristirici ureteci tarafindan otomatik olarak veya yari otomatik olarak olusturulabilir Ayristirma bicimlendirilmis cikti uretimlerini tek bir sablonda tamamlama gorevi gorur Bunlar farkli etki alanlarina uygulanabilir ancak bir derleyicinin girdi ve cikti asamalari gibi genellikle bir arada sunulur Bir ayristiriciya yapilan girdi genellikle bazi programlama dilindeki metin olmakla birlikte dogal bir dildeki metin ya da daha az kapsamli metin verileri de olabilir bu durumda ayristirma agaci olusturulmadan metnin yalnizca belirli bolumleri cikarilir Ayristiricilar scanf gibi cok basit islevleri bir C derleyicisinin arayuzu veya bir web tarayicisinin HTML ayristiricisi gibi karmasik programlari icerir Basit bir ayristirma sinifinin buyuk bir kismi duzenli ifadeler ve bir kullanilarak yapilir bu da oruntu esleme ve metin cikarma islemine izin verir Diger durumlarda duzenli ifadeler ayristirmadan once lexing adimi daha sonra ayristirici tarafindan ciktisi kullanilmak uzere kullanilir Ayristiricilarin kullanimi girdiye gore degismektedir Veri dillerinde bir ayristirici programin HTML veya XML metninde okuma islemi gibi dosya okuma ozelligi olarak bulunur ancak burada kullanilan diller isaretleme dilleridir Programlama dillerinde bir ayristirici dahili bir programlamanin bazi bicimlerini olusturmak icin bilgisayar programlama dilinin kaynak kodunu ayristiran derleyicinin veya yorumlayicinin bir bilesenidir Cozumleme islemi derleyici onyuzunde onemli bir adimdir Programlama dilleri deterministik bir baglamdan bagimsiz dil bilgisi ile belirtilmeye egilimlidir cunku bunlar icin hizli ve etkili ayristiricilar yazilabilir Derleyiciler icin ayristirmanin kendisi bir gecis islemiyle veya birden cok gecis islemiyle yapilabilir tek gecisli derleyici ve cok gecisli derleyici Tek gecisli bir derleyicinin dezavantajlari ileriye dogru gecis sirasinda duzeltme islemleri icin hazirlanan bir denetim mekanizmasi eklenmesiyle onlenebilir ve girdi olarak verilen kod parcaciklarinin mevcut program olanaklarina sahip oldugu durumda duzeltmeler geriye uygulanir Boyle bir duzeltme mekanizmasinin yararli olacagi bir ornek GOTO ifadesi verilebilir Program parcacigi tamamlanincaya kadar bilinmeyen ve ileriye yonelik bir GOTO ifadesi oldugunu varsayalim Bu durumda duzeltmenin uygulanmasiyla GOTO nun hedefi taninincaya dek ertelenecek ve boylelikle kod parcacigi donguden cikarilacaktir Buna paralel olarak geriye yonelik bir GOTO nun duzeltilmesi gerekmemektedir ve bunun icin yapilacak bir denetim gereksiz bir kisitlama gibi gorunmektedir Baglamdan bagimsiz sozdizimleri bir dilin tum gereksinimlerini ne olcude ifade edebilecekleri olcutuyle sinirlidir Bicimsel olmayan dillerin hafizasi sinirli olmaktadir Dil bilgisi keyfi olarak secilen bir yapinin uzun bir girdinin icerisindeki varligini hatirlayamaz Bu duruma ornek olarak bir degiskenin atifta bulunulmadan once tanimlanmasini gerektiren diller verilebilir Bununla birlikte bu kisitlamayi ifade edebilen daha guclu gramer yapilari ise verimli bir sekilde ayristirilamaz Bu nedenle istenen dil yapilarinin bir ust kumesini baz alan yani bazi gecersiz yapilari da dahil eden baglamdan bagimsiz bir dil bilgisi sayesinde rahat bir ayristirici olusturmak yaygin bir kullanimdir Bu sayede hem kolay ayristirilabilir bir dil olusturulabilir ve istenmeyen yapilar anlamsal analiz ya da baglamsal analiz adiminda filtrelenebilir Ornegin Python da asagidaki ifade sozdizimsel olarak gecerli bir koddur x 1 print x Bununla birlikte asagidaki kod baglamdan bagimsiz dil bilgisi acisindan sozdizimsel olarak gecer ve onceki ile ayni yapiya sahip bir sozdizimi agaci uretir ancak baglam duyarli dil bilgisi acisindan sozdizimsel olarak gecersizdir kullanilmadan once bu degiskenlerin tanimlanmis olmasini gerektirir x 1 print y Kod parcaciklari ayristirma asamasinda analiz edilmek yerine denetim mekanizmasi soz dizimi agacindaki degerleri kontrol ederek ve dolayisiyla kod parcaciklarini anlamsal analizin bir parcasi olarak yakalamaktadir Baglama duyarli soz dizimi pratikte genellikle anlambilimsel olarak daha kolay analiz edilmektedir