PostScript | |
İlk versiyonun tarihi | 1982 |
---|---|
Paradigma | multiparadigm : yığın yönelimli , prosedürel |
Geliştirici | Adobe Sistemleri |
Son sürüm | 3 (1997) |
Yazıyor | dinamik, güçlü |
Tarafından etkilenmiş | İleri |
Etkilenen | |
Uygulamalar | Adobe PostScript , TrueImage , Ghostscript |
Dosya uzantısı | ps |
Uzantı | .ps |
---|---|
MIME türü | application/postscript |
PUID | fmt / 501 , x-fmt / 408 , x-fmt / 407 , x-fmt / 406 , x-fmt / 91 |
Tarafından geliştirildi | Adobe |
Biçim türü | dosya formatını yazdır |
Menşei | Encapsulated PostScript |
PostScript , Adobe tarafından geliştirilmiş bir sayfa açıklama dilidir . Öğelerinin çoğunun vektör formülasyonlarına dayanmaktadır . Ayrıca raster görüntülerin nasıl işleneceğini de bilir (nokta nokta).
Bu platformlar arası dil , sayfayı tanımlayan tüm unsurları (metinler, resimler, yazı tipleri, renkler, vb.) İçeren tek bir dosya elde etmeyi mümkün kılar .
PostScript pratik olarak bir standart haline geldi, çoğu lazer yazıcı bir yorumlayıcı içerir ve bu formatta açıklanan bir belgeyi doğrudan işleyebilir. Diğerlerinde, PostScript dilini bu yazıcılar tarafından anlaşılabilir raster biçimine dönüştürmek için bir girdi yazılım filtresi kullanmak gerekir .
PostScript'in geliştirilmesi 2007'den beri Adobe tarafından durduruldu, böylece PDF devralabilir.
PostScript'in diğer soyundan gelenler şunlardır:
Postscript, herhangi bir algoritmanın kodlanmasına izin veren eksiksiz bir dildir . Bu tür programları doğrudan yazmak oldukça mümkün olsa da, genellikle yazıcı sürücüleri gibi başka programlar tarafından yapılırlar.
Postscript, yürütüleceği ortamdan ayrılamaz. Bu dilin tamamen dinamik doğası göz önüne alındığında, aslında yorumlanacaktır .
Tercüman, bir yığın ve birkaç sözlük işleyerek çalışır. Yığın, işlev parametreleri ve ardından sonuçları için geçici depolama olarak kullanılır. Sözlükler, değişkenlerin ve işlev kodlarının depolanmasına izin verir.
Bir PostScript programı, boşluklar, sekme (TAB), satır başı (CR), satır besleme (LF) veya yorumlarla ayrılmış bir dizi sözcükten oluşur . Yorumlayıcı, ters Lehçe gösterimde bir hesap makinesi olarak çalışarak PostScript programının her bir kelimesini sırayla analiz eder , yani her kelime değerlendirilir, ardından bu değerlendirmenin sonuçları yığının üstüne yerleştirilir ve bu şekilde devam eder.
Örnek, basit sayısal hesaplamayı gerçekleştirmek için b 2 - 4 ac , bu kodlanabilir: b b mul 4 a mul c mul sub
PostScript, aşağıdaki beş tür kelimeyi destekler:
Sayısal sabit integer ( 123) veya real ( 3.14159), değerlendirme sayısal değeri yığının en üstüne ekler; Dize sabiti parantez içine alınmış karakter dizileridir, örneğin (Abc)"Abc" dizesini temsil eder; Bir isme referans /abir değişkeni veya işlevi adlandırmak için kullanılabilen "a" adını temsil eder; referans yığının en üstüne eklenir; Soyadı önceden tanımlanmış veya oluşturulmuş bir prosedürün, bir değişkenin, bir sözlüğün adı olabilir; isim aktif sözlüklerde aranır, o zaman bir değer ise yığına yerleştirilir ve bir fonksiyon ise denir (çalıştırılır); bir işlevi değerlendirmek yığının en üstündeki değerleri kullanabilir ve bunları herhangi bir sonuçla değiştirebilir; Oluşturucu dört kurucu, değişken boyutlu veri yapıları oluşturmanıza olanak sağlar. Yapının başlangıcını ve sonunu sınırlayan eşleştirilmiş karakterlerden oluşurlar:Sözlükler yalnızca iki sütunlu tablolardır:
Bu özellik ile, bir sözlük bu nedenle tek sütunlu bir dizi gibi çalışır, ancak dizini basit bir tamsayı aralığı ile sınırlandırılmadan herhangi bir tipte olabilir.
Sözlük, bir karma tablo gibi yönetilir (dilin kendisi tarafından önceden tanımlanmış bir karma işlevi sayesinde), başlangıç boyutu, kişinin istediği ad-değer çifti sayısına göre oluşturulma sırasında tanımlanabilir. Saklamak için. çarpışmaların oluşumunu sınırlar (ancak PostScript, isimlerdeki çarpışma sayısına veya doldurulma hızına göre bir sözlüğü dinamik olarak nasıl yeniden boyutlandıracağını bilir). PostScript sözlükleri, esas olarak (ancak özel olarak değil) , dilde başka bir yerde adlandırılan ve başvurulan değişkenlerin kapsamını (dinamik olarak) tanımlamak için kullanılır .
Önceden tanımlanmış operatörler arasında en önemlisi, defmevcut sözlüğe yeni değişkenlerin değerleriyle tanımlanmasına veya değerlerinin değiştirilmesine ve işlevlerin tanımlanmasına veya yeniden tanımlanmasına izin veren bir ad-değer ilişkisi eklemeye izin vermesidir. Bu nedenle, Postscript'te çalıştırılabilir kodun neredeyse diğerleri gibi veriler olduğunu ve anında oluşturulup değiştirilebileceğini görebiliriz.
Örnekler:
Yukarıdaki son örnekte, hiçbir şey "counter" adlı değişkenin değeri çıkardığımız değişkenin aynısı olacağını göstermez. Aslında, "def" bir ad-değer ilişkisini yalnızca geçerli sözlükte ve kapsam yığınındaki başka bir sözlükte saklamak için kullanılır. Bununla birlikte, sayaç değişkenini okumak (yukarıdaki koddaki ikinci referans), mevcut sözlükten başka bir sözlükte bulunan bir değişkenin değerini döndürebilir (veya kapsam yığınındaki sözlüklerden hiçbiri yoksa çalışma zamanında bir istisna oluşturabilir. Bu isimde bir değişken içerir): bu durumda, yeni bir değişken, bulunduğu yerde orijinal değişkeni değiştirmeden mevcut sözlüğe "def" tarafından eklenecektir ve bu nedenle değerini koruyacaktır; ancak, mevcut sözlük aktif olduğu sürece, yeni değişken eskisini gizleyecektir. Bu cihaz, bu nedenle, yığındaki göreceli bir konum dışında yerel değişkenlerin yönetilmesini mümkün kılar.
PostScript, bir değişkene yapılan başvurular (a'dan sonra verilen adına göre /) ve değerine yapılan başvurular arasında ayrım yapabilir . Bununla birlikte, referans, kapsamlı bir sözlükte, onu aramak için bir sözlükle ilişkilendirilene kadar çözümlenmez. Bir ad, /baş harfsiz kullanıldığında , işlev etkin kapsamlı sözlüklerde derlendiğinde hemen aranır (derleme sırasında geçerli sözlükten başlayarak işlev yürütüldüğünde etkin olacak olanı değil), ardından adı değişken, yığındaki çalışma zamanında, adın bulunduğu sözlükte bu adla ilişkilendirilen değerle değiştirilir.
Ayrıca, değerine veya başka bir sözlükte aynı adı taşıyan başka bir değişkene değil, iyi tanımlanmış bir değişkene tam bir referans oluşturmak için, yalnızca bu değişkenin adını değil, aynı zamanda onu içeren sözlüğe bir referansı da belirtmeliyiz ve nerede aranmalıdır. Sözlüğe referans verilmediyse (örneğin, a ile ön ek olmaksızın /), ad çözümlemesi dinamiktir ve bu nedenle yürütme bağlamına bağlı olarak farklı değişkenlere başvurabilir.
Bu nedenle Postcript, bir değişkene referans kullanımı için iki farklı bağlam tanımlar:
Bu nedenle, bir değişkenin referansını kaldırmak için bu davranış (okuma erişimi) def, her zaman yalnızca yürütme sırasında mevcut sözlüğe göre yapılan bir değişkeni depolamaktan çok farklıdır .
hiç | pop | - | öğeyi yığından kaldırır | |||||||
herhangi 1 | herhangi 2 | değişim | hepsi 2 | hepsi 1 | iki öğeyi takas et | |||||
... | ... | |||||||||
1 numara | 2 numara | Ekle | toplam | döner sayısı 1 artı sayısı 2 | ||||||
1 numara | 2 numara | div | bölüm | döner sayısı 1 bölünmüş sayısı 2 | ||||||
tam sayı 1 | tam sayı 2 | idiv | bölüm | döner tamsayıdır 1 bölünmüş tam sayı 2 | ||||||
... | ... |
PostScript, Adobe Company lisansı altında sağlanır. Bununla birlikte, Ghostscript adında ücretsiz bir PostScript yorumlayıcısı vardır .