Yanıtlar:
Aslında abstact sözdizimi ve genellikle anlaşıldığı gibi türler arasında çok benzerlik vardır. Ancak türler resmi bir sözdizimsel kavramdır ve AS ağaçları da sözdizimidir, tipler semantik bir kavramdır .
Terminoloji, cebir ( serbest cebir olarak da adlandırılır ) ve evrensel cebir teriminden gelir . Bunlar aslında herhangi bir yorumdan bağımsız olarak analiz edilen cebirsel yapıların sözdizimsel teorileridir. 20. yüzyılın ilk yarısında geliştirildi.
Bir terim, düğümlerin sonlu bir operatör kümesinden etiketlendiği bir ağaç olarak görülebilir; her operatör, ağaçtaki kızların sayısını belirten sabit bir düzene sahiptir. Arity 0 yapraklar içindir. In cebiri çok sıralanmış bu türlü rafine her kızı için, her bir tür aittir operatör ve arities türlü sıralı bir listede yerini böylece onun kafası operatörün tür olduğunu düzeltmeleri. Bir operatörün türüne, kızının türlerinin listesiyle birlikte operatörün imzası denir .
Evrensel cebirlerde, bu terimler arasında eşit olarak tanımlanmış denklik ilişkileri getirilerek daha da rafine edilir.
Biraz solmuş gibi görünse de, bu kavramlar 20. yüzyılın sonlarında bilgisayar bilimlerinde oldukça popülerdi ve çok çalışıldı, daha sonra soyut veri türleri için bir temel olarak görüldüğü soyut cebirler, yani kısmen neyin öncüsü nesne yönelimli programlamada nos sınıfları.
Evrensel cebirler, türlerin ve programlama dillerinin mevcut vizyonunun da temelini oluşturan kategori teorisinin gelişimi ile ilgilidir.
Cebirler sözdizimsel nesnelerdir ve türlere karşılık gelen bazı anlamsal alan (lar) da bir yorumla birlikte kullanılması amaçlanmıştır. Bir yorumlama, değerleri değer türlerine (türlerine) ve operatörleri bu alanlar arasındaki işlevlere eşleyen bir homomorfizmdir , böylece imzalara saygı duyulur ve denklem cebiri durumunda da denklemler bulunur. Grup teorisinin sonuçlarını, bir grubun tanımına saygı duyan bir işlemle herhangi bir etki alanına bu şekilde uygulayabilirsiniz.
Bu organizasyon, özellikle programlama dillerini resmileştirmekle ilgilenen programlama dillerindeki ilk araştırmacılar tarafından çok uygun görülmüştür. Sözdizimi ve anlambilimi izole etme ve matematiksel olarak iyi anlaşılma avantajına sahipti.
Bunu benimsemenin bir başka nedeni, programların, geliştirme ortamlarında veya programların özelliklerini kanıtlamak için resmi sistemlerde (ki daha fazla ikiz problem olduğu ortaya çıktı) manipüle etmek için aracın geliştirilmesiyle ilgili bir endişeydi.
Bu , programlama dilleri için temel olarak çok sıralı bir cebirin (bazen bazı sistemlerde sıralama birliği kullanımı ile rafine edilmiş) terimleri olan soyut sözdizimi ağacı (AST) kavramının ortaya çıkmasına yol açar . AST, anlambilimin homomorfizm tarafından ifade anlambilimindeki gibi tanımlanabildiği bir dilin referans sözdizimidir.
Bu sadece dillerin anlambilimini incelemek için uygun değildir, aynı zamanda ağaçlar daha iyi yapılandırılmış ve bu nedenle programlama araçları ve programlama ortamları geliştirmek için daha iyi bir temel oluşturur.
Ayrıştırma teknolojisinin sınırlamaları çarpık gramerlerin kullanımını zorladığı için, geleneksel olarak dağınık bir parça olan ayrıştırmayı izole etmeyi sağlar. Ayrıca sunum sorunlarını da etkiliyor.
Bazen uygun olabilecek programların birden fazla somut (dize veya grafik) temsilini mümkün kılar (program sözdiziminde sekmelerden veya bunun tersinden ziyade noktalama işaretlerini kullanmanın nedenlerine gerek yoktur).
Program uygulamalarını soyut yorumlarla analiz etmek için programların ve türlerin birçok yorumunu tanımlamayı kolaylaştırır .
Otomatik program dönüşümleri veya diller arasındaki çeviriler için (yarı) otomatik program işleme araçları yazmak için uygundur.
İşler bazen pratikte biraz daha karmaşık olabilir, çünkü Soyut Sözdiziminin bazı formları bazı operatörlerin çeşitli türlere ait ağaçları (ifadeleri) satın almasına izin verir (ona bakmak için gayri resmi bir yol). Örneğin, değişkenleri (atanabilir varlıklar) temsil eden sözdizimsel yapılar için bir tür ve ifadeler için başka bir tür olabilir. Ancak herhangi bir değişken ifade olarak kullanılabilir, tersi de yanlıştır.
Programlama dilleri hakkındaki bu ilk makaleler yetmişli yılların ortalarına dayanmaktadır. O zamandaki kavramsallaştırma, sözdizimi bilincine sahip (daha sonra "yönlendirilmiş" sözcüğü) programlama ortamlarının üretimi için tasarlanmıştır. Avrupa'da Mentor ve Centaur'u ve ABD'de Cornell Program Synthesizer'ı arayın. Bu tür kavramları pratik olarak kullanan ilk iki sistemdi. Daha sonra diğerleri geliştirildi.
Ancak soyut sözdizimi bu sistemlerden önce gelir. Lisp dili (1958) soyut bir sözdizimine sahipti, ki bu bir mantıkçı tarafından geliştirildiğinden ve programları manipüle eden programlar yapmak için sürpriz değil (ayrıca daha sonra gelen ML ve LCF'ye de bakınız). Ancak Lisp sıralanmadı: her şey sözdizimsel olarak bir listeydi ve daha rafine yapı aslında anlambilime bağlıydı. Bu, bazı insanların bir şekilde yanlış bir şekilde Lisp'in sözdizimi olmadığını düşünmesine yol açar.
Dördüncü bölümde, sözdizimi ve türlerin anlambilim için olduğu anlaşılmaktadır.
40. sayfadaki örnek sözdizimi grafiği, L {num str} dilindeki sıralamalar ile ilgilidir. Görünüşe göre sıralamalar dilin sözdizimindeki kategorilerdir.
Özellikle, "artı" nın sonucunun sözdizimsel kategorisi olan bir türü vardır. "Plus" operatörünün türü "Exp" olarak adlandırılır. Bu sözdizimsel olarak, "artı" operatörünün çağrılmasının bir ifade olduğu gerçeğini temsil eder. "Artı" operatörünün çağrılması, bir ifadeye izin verilen soyut bir sözdizimi ağacındaki bir konumu doldurabilir. Bu bir "artı" ne tür bir yapıdır. Bir programı temsil eden metnin yapısına bu şekilde uyar.
Sayfa 41 tip sistemi, L {num str} dilindeki türlerle ilgilidir. "Artı" operatörünün türü, işlenenlerinin "num" türüne sahip olduğu düşünüldüğünde "num" dur. Bu karar, operatörün "artı" semantiğinin kısmi bir tanımıdır. Yani, "artı" operatörünün anlamının bir kısmı, bir sayı üretmek için iki sayının birleştirilmesidir. Bu anlam "artı" yı diğer ifadelerden ayırır.
Ayrıca, "num" ve "str" olmak üzere iki tür içeren "Typ" adında bir sıralama vardır.
Bölüm 1'in başında Harper, sort kelimesiyle ne demek istediğine dair bir ipucu verir :
Bir dilin sözdizimi, çeşitli türde ifadelerin (ifadeler, komutlar, bildirimler vb.) Program oluşturmak için birleştirilebileceği araçları belirtir .
Kelime öbeğini , daha sonra tartıştığı soyut bir sözdizimi ağacı olarak tanımlar .