LISP Programı – Bilgisayar Bilimleri Ödevleri – Bilgisayar Bilimleri Ödev Hazırlatma – Bilgisayar Bilimleri Alanında Tez Yazdırma – Bilgisayar Bilimleri Ödev Yaptırma Fiyatları

LISP Programı
Burada, LISP programlarını yorumlamak için bir program sunuyoruz. Yorumlayıcının girdisi bir LISP programı yani sabitlerden ve bağımsız değişkenleri olan işlevlerden oluşan bir ifadedir ve çıktı, ifadenin değerlendirilmesi sonucudur. Dolayısıyla yorumlayıcı, şimdiye kadar gördüğümüz programları çalıştırmak için kullanılabilir.
İlginç bir yön, tercümanın kendisinin bir LISP programı olmasıdır, yani her şey biraz döngüseldir: tercümanı çalıştırmak için zaten bir LISP uygulamasına sahip olmanız gerekir, bu da bu tercümana ihtiyacınız olmadığı anlamına gelir. Doğru, ama en az iki amaca hizmet ediyor.
İlk olarak, daha büyük bir LISP programının güzel bir örneğidir. İkinci olarak, bir sonraki bölümde tartışacağımız Pascal’da yazılmış bir yorumlayıcı için bir plan görevi görür. Aynı zamanda LISP programlarının anlamını tanımlıyor olarak da görülebilir: Bir LISP programını yürütmenin sonucunun ne olduğunu bilmek istiyorsanız, tercümanın bununla ne yapacağını bulmanız yeterli.
Bir programlama dilinin semantiğinin bu şekilde tanımlanması, önceki bölümlerde kullandığımız aksiyomatik semantikten çok farklıdır. Operasyonel semantik olarak adlandırılır, semantiği başka bir programa göre tanımlar. Döngüsel tanımlar çukuruna düşmemek için çok dikkatli olmalısınız.
LISP tercümanımız nasıl çalışıyor? Bir bağımsız değişkenler listesine bir işlev uygulayan bir işlev uygulaması mevcuttur. Örneğin, işlev araba ise ve bağımsız değişken listesi ((a b c)) ise, sonuç a’dır. Sonuç (abc) değildir, çünkü ((abc)) bağımsız değişkenlerin listesi olarak söylenmiştir, bu nedenle car’ın ilk ve tek bağımsız değişkeni listedir (a bc). ((a b c))’ye I uygulamasının sonucu nedir?
Bu, I’in tanımına bağlıdır, bu nedenle program uygulamamızın mevcut fonksiyon tanımları ile sağlanması gerekir. Değişkenlerin değerlerine de ihtiyacımız olacak. Hem değişkenler hem de işlevler için bir tanımlayıcıyla ilişkili değeri kaydetmek için bir veri yapısı, sözde ilişkilendirme listesi kullanıyoruz.
Her bir çiftin mevcut değeri ile birlikte bir tanımlayıcı olduğu uzun bir çift listesidir. Çiftin arabası tanımlayıcıdır ve cdr değeridir. Tanımlayıcı bir işlev ise, değer A ifadesidir. Örneğin, a değişkeni t değerine sahipse ve I işlevi bir listenin üçüncü öğesini döndürürse, ilişkilendirme listesi olabilir.
İç içe çeşitli işlev çağrılarımız varsa, o zaman bir tanımlayıcı birkaç kez, muhtemelen farklı değerlere bağlanmış olabilir. Mevcut programımızda, ilişkilendirme listesi tüm bağlamaları içerecektir ve geçerli olan, listenin başına en yakın olanıdır. Örneğin, ilişkilendirme listesi okursa, a değişkeninin değeri 23’tür.
Aşağıda tanımlanan işlev assoc, ilişkilendirme listesi verildiğinde bir tanımlayıcının değerini döndürür. x’i ilk tanımlayıcıyla karşılaştırarak, eşitlerse değerini döndürerek veya farklıysa listenin geri kalanını arayarak x’in a listesindeki ilk oluşumunu arar.
pairlis işlevi tam tersidir: x tanımlayıcı listesi, y değer listesi ve a ilişkilendirme listesi verildiğinde, eşleşen tanımlayıcılar ve değerler alınarak oluşturulan çiftlerle genişletilmiş ilişkilendirme listesi a’yı döndürür.
x ve y listeleri eşit uzunluktadır. Boşsa, sonuç a’dır; aksi takdirde x’teki ilk tanımlayıcı, y’deki ilk değerle eşleştirilir ve x ve y’nin geri kalanları benzer şekilde a’ya eklenir.
Bu iki fonksiyon, uygulama fonksiyonumuzda kullanılmaktadır. Uygulanacak fonksiyon beş standart fonksiyondan biri ise sonuç hemen belirlenir. İşlev bir tanımlayıcıysa ancak beş standart addan biri değilse, değeri (işlev gövdesi) a ilişkilendirme listesinde aranır ve sonucu uygulanır.
fn işlevi bir tanımlayıcı değilse, o zaman bir lambda ifadesi olmalıdır. A -ifade fn’yi bağımsız değişkenler listesine uygulamanın sonucu, işlev gövdesini oluşturan ifadenin (caddr fn), a ilişkilendirme listesinin, değişkenler listesinin (cadr fn) x listesiyle eşleştirilmesiyle genişletildiği bir bağlamda değerlendirilmesiyle elde edilir. argümanlar.
Değişkenlerden bazılarının zaten kendileriyle ilişkilendirilmiş bir değeri varsa, yeni bağlama eskisinin üzerine yazmalıdır. Bu nedenle pairlis işlevi, yeni bağlamaları ilişkilendirme listesinin önüne ekler.
Autocad lisp Arşivi
AutoCAD lisp örnekleri
AutoCAD lisp indir
AutoCAD Lisp
AutoCAD lisp yazma
AutoLISP indir
Lisp programlama dili
AutoLISP komutları
Bu da bizi bir ifadeyi değerlendirme sorunuyla baş başa bırakıyor. Beş olasılık var. İfade bir sabitse (t veya sıfır), o zaman sabit, ifadenin değeridir. İfade bir değişken ise, değeri ifadenin değeridir. İfade, (alıntı x) biçimindeyse, o zaman x, başka değerlendirmeler olmaksızın ifadenin değeridir.
İfade (koşul x) biçimindeyse, o zaman bir koşullu ifadeye sahibiz ve doğru olarak değerlendirilen bir tane bulunana kadar tüm koşullar birbiri ardına kontrol edilmelidir; ve karşılık gelen alternatif, koşullu ifadenin değeridir.
Son olarak, ifade (Jx) biçimindeyse, bu bağımsız değişkenlerin tümü değerlendirildikten sonra f işlevi x bağımsız değişkenleri listesine uygulanır. Tercüman, sırasıyla bir koşullu ifadeyi ve argüman listesini değerlendirmek için evcon ve evlis yardımcı fonksiyonlarını kullanır.
Hepsi bu kadar. LISP yorumlayıcısının ihtiyaç duyduğu tüm yardımcı fonksiyonlarla birlikte listesi aşağıdadır. define bu yorumlayıcıda uygulanmadı. Tanımla ilgili sorun, bunun bir sonuç döndüren bir işlev olmaması, bunun yerine genel ilişkilendirme listesini değiştirmesidir. Bu tamamen işlevsel bir çerçevede yapılamaz.
Pascal ile Yazılmış Bir LISP Yorumlama
Bu bölümde, LISP yorumlayıcısını Pascal ile yazılmış bir yorumlayıcıya dönüştürüyoruz. Çeviri, bir sorunun ele alınmasını gerektiriyor: Pascal’da atomlar ve listeler nasıl temsil ediliyor? Listelerle başlayalım. Listeler keyfi boyuttaki dizilerdir ve onları sabit boyutlu nesnelerle temsil etmemiz gerekir.
Bir x listesini bir i tamsayısıyla temsil etme olasılığını takip ediyoruz. Bir listedeki işlemlerin car ve cdr olduğu gerçeğinden yola çıkarak, a ve d olmak üzere iki diziyi tanıtıyoruz. Araba ve cdr ile (araba x) = a[i] ve (cdr x) = d[i] ile ilişkilidirler. Dizi elemanlarının türü nedir? Pekala, bu (cdrx) karşı olabilir, bu nedenle d bir tamsayı dizisi olmalıdır. Benzer şekilde, a bir tamsayı dizisidir.
Bu seçim, atomların da tamsayılarla temsil edildiğini ima eder ve bir saniye içinde bunun nasıl yapılacağına karar vermemiz gerekir. Ayrıca listelerin atomlardan nasıl ayırt edilebileceğine de karar vermemiz gerekiyor (bunu atom boole işlevini uygulamak için yapmak zorundayız).
Atomlar için negatif tamsayılar kullanabilmemiz için a ve d’nin indeks aralığını pozitif tamsayılarla sınırlayalım. Bir tamsayının işareti bize onun bir listeyi mi yoksa bir atomu mu temsil ettiğini söyler.
AutoCAD Lisp Autocad lisp Arşivi AutoCAD lisp indir AutoCAD lisp örnekleri AutoCAD lisp yazma AutoLISP indir AutoLISP komutları Lisp programlama dili