İçeriğe atla

toprak.run/rfc/data/5

RFC 5 · Veri

DEL (Decode-Encode Language - Kod Çözme-Kodlama Dili)

ASIL METİN 2 Haziran 1969·Jeff Rulifson, Stanford Research Institute (SRI)

ÇEVİRİ tarih kayıtlı değil·ASLINI GÖR

İçindekiler

  1. Özet
  2. Önsöz
  3. Ağ Standart Çeviricileri (NST)
  4. Evrensel Donanım Temsili
  5. NST'ye Giriş
  6. NST'nin Avantajları
  7. Örnek: AHI NLS Kullanıcı Konsol İletişimi
  8. DEL Sözdizimi
  9. Bildirimler
  10. Aritmetik İşlemler
  11. Birincil Değerler
  12. Bağlaçlı İfadeler
  13. Aritmetik İfadeler
  14. Ağaç Manipülasyonu
  15. Akış ve Kontrol
  16. G/Ç İfadeleri
  17. Örnek Programlar

Özet

Decode-Encode Language (DEL - Kod Çözme-Kodlama Dili), iki spesifik bilgisayar ağı görevine özel olarak tasarlanmış makine-bağımsız bir dildir:

  1. Giriş İşleme: Etkileşimli konsollardan giriş kodlarını kabul etme, anında geri bildirim verme ve sonuç bilgilerini ağ iletimi için mesaj paketlerine paketleme.
  2. Çıkış İşleme: Başka bir bilgisayardan mesaj paketlerini kabul etme, bunları açma, görüntü bilgilerinin ağaçlarını oluşturma ve bilgileri kullanıcının etkileşimli istasyonuna gönderme.

Bu, DEL dilinin evrimi için bir çalışma belgesidir. Yorumlar SRI'daki Jeff Rulifson aracılığıyla yapılmalıdır.


Önsöz

DEL'in Evrimi

İlk ARPA ağı çalışma grubu 25-26 Ekim 1968'de SRI'da toplandı. Genel olarak, ağ üzerinden etkileşimli programların çalıştırılmasının karşılaşılacak ilk problem olduğu konusunda anlaşmaya varıldı.

İlk Toplantı (Ekim 1968)

Grup, DEL benzeri bir yaklaşımın temel kavramları hakkında zaten anlaşmış durumda, aşağıdakileri belirledi:

  • Terminoloji
  • DEL programları için beklentiler
  • Önerilen anlamsal yetenek listeleri

Katılımcılar: Andrews, Baray, Carr, Crocker, Rulifson ve Stoughton

Sonraki Toplantılar

  • Crocker & Rulifson (18 Kasım 1968, SRI'da): Resmi eş-rutinlerin dahil edilmesi
  • Stoughton & Rulifson (12 Aralık 1968, SRI'da): Ocak 1969 sonunda UTAH'ta grup toplantısı planlandı

Kamuya Açıklama

Bu yazının ilk kamuya açıklanması 13 Şubat 1969'da Cambridge'deki BBN NET toplantısında yapıldı.


Ağ Standart Çeviricileri (NST)

Genel Bakış

NST kütüphanesi, sunucu host'tan alınan DEL programlarından kullanıcı sitelerinde derlenen kodla verimli bir şekilde bütünleşmek için gerekli programlar kümesidir.

NST-DEL yaklaşımı, NET etkileşimli sistem iletişimi için geniş bir kullanım senaryosu yelpazesinde çalışmak üzere tasarlanmıştır.

NST-DEL Kullanımının Üç Seviyesi

Seviye 1: Doğrudan İletim (Minimum İşleme)

En düşük karmaşıklık modu

NST-DEL kullanımının en düşük seviyesi, kullanıcı programlarının kullanıcı-host'ta alacağı aynı formatta bilgilerle sunucu-host'a doğrudan iletimdir.

Özellikler:

  • NST varsayılan olarak hareketsizdir
  • DEL programı evrensel donanım temsili girişi almaz
  • Giriş, kullanıcı-host için normal şekilde alınır
  • DEL programı sadece bir mesaj oluşturucu ve gönderici haline gelir

Seviye 2: Yankı Tabloları ile TTY (Orta)

Orta karmaşıklık modu

Daha orta düzeyde bir kullanım, kullanıcı-host'ta bir TTY için yankı tablolarına sahip olmaktır.

Özellikler:

  • DEL programı kullanıcı için tam çift yönlü bir TTY çalıştırır
  • Kullanıcıya karakterleri yankılar
  • Karakterleri sunucu-host karakter setine çevirir
  • Çevrilmiş karakterleri mesajlara paketler
  • Uygun kesme karakterlerinde mesajları gönderir
  • Sunucu-host'tan mesajlar alındığında:
  • Bunları kullanıcı-host karakter setine çevirir
  • TTY'de yazdırır

Seviye 3: Büyük Görüntü Odaklı Sistemler (Gelişmiş)

En yüksek karmaşıklık modu

DEL için daha iddialı bir görev, büyük, görüntü odaklı sistemlerin ağ üzerinden uzak konsollardan çalıştırılmasıdır.

Problem Tanımı:

  • Büyük etkileşimli sistemler kullanıcılara önemli geri bildirim sunar
  • Geri bildirim genellikle standart dışı ve karmaşıktır
  • Basit yankı tablolarıyla modellenemez
  • Düğme durumu her değiştiğinde kullanıcı programının TSS'de etkinleştirilmesi gerekir

Yük Problemi:

  • Bu, tek bir TSS üzerine gereksiz yere büyük yük koyar
  • Sistem ağ üzerinden çalışırsa, iki sistemi yükleyebilir

DEL Çözümü:

  • DEL programı kullanıcı-host'ta çalışır
  • Tüm anında geri bildirimleri işler (karmaşık bir yankı tablosu gibi)
  • Uygun düğme basışlarında:
  • Sunucu-host'a mesajlar gönderilir
  • Karşılığında görüntü güncellemeleri alınır

Gelişmiş Özellik: Standart Olmayan Konsol Simülasyonu

Daha zor, genellikle ihmal edilen problemlerden biri, bir standart olmayan konsolun başka bir standart olmayan konsol üzerinde etkili simülasyonudur.

  • DEL, eş-rutin yapısı aracılığıyla bir çözüm sunar
  • Karmaşık etkileşimli sistemler için, DEL programlarının bir kısmı sunucu-host programcıları tarafından oluşturulur
  • Program ve giriş akışı arasındaki arayüzler, kullanıcı-host programcıları tarafından kolayca eklenir
  • Yetenek kaybı olmadan olağandışı donanım için esneklik sağlar

Evrensel Donanım Temsili

Amaç

Herhangi bir tesisin kullanıcı kodlarını başka bir tesise eşlemek için gereken çevirici sayısını en aza indirmek için evrensel bir donanım temsili vardır.

Bu sadece, ilk ağdaki tüm etkileşimli görüntü istasyonlarındaki tüm donanım aygıtları hakkında genel terimlerle konuşmanın bir yoludur.

Görüntü Koordinat Sistemi

Örnek: Görüntü Temsili

Bir görüntü kare olarak düşünülür:

  • Orta nokta: koordinatlar (0, 0)
  • Aralık: her iki eksende -1 ile 1 arası
  • Hassasiyet: Bir nokta herhangi bir doğrulukla belirtilebilir

Avantajlar:

  • Gerçek görüntüdeki belirli raster nokta sayısı veya yoğunluğundan bağımsız çalışır
  • Makine-bağımsız temsil
  • Herhangi bir çözünürlüğe ölçeklenir

Ağ Standart Çeviricisine (NST) Giriş

Senaryo: Uzaktan NLS Erişimi

Uzak bir sitedeki (örneğin Utah) bir kullanıcının AHI sistemine kayıtlı olduğunu ve NLS (Network Line System) çalıştırmak istediğini varsayalım.

Adım 1: NLS'ye Girme

İlk adım, normal şekilde NLS'ye girmektir. O anda, Utah sistemi NLS'den sembolik bir program isteyecektir.

Adım 2: Uzaktan Kodlama Programı (REP)

REP Tanımı:

  • Bu program DEL'de yazılır
  • NLS Uzaktan Kodlama Programı (REP) olarak adlandırılır
  • Evrensel Donanım Temsilinde giriş kabul eder
  • NLS tarafından kullanılabilir forma çevirir

REP Yetenekleri:

  • Arabellekte karakterleri paketler
  • Yerel geri bildirim sağlar
  • Yerel görüntü yönetimini işler

Adım 3: Derleme ve Yürütme

Program Utah'ta ilk alındığında:

  1. Program derlenir
  2. Program standart kütüphane ile çalışmak üzere yüklenir
  3. Utah konsolundan gelen tüm girişler NLS NEP'e (Network Encode Program) gider

Adım 4: İşleme Hattı

NLS NEP girişi işler:

  1. İşleme
  2. Ayrıştırma
  3. Bloklama
  4. Çeviri
  5. Uygun karakter alındığında:
  • 940'a transferleri başlatır
  • Bitler 940 tarafından kabul edilebilir formda transfer edilir
  • NLS'nin Utah ile diğer NET kullanıcıları arasında ayrım yapmasına gerek olmayacak şekilde standart formda olabilir

NST'nin Avantajları

Dağıtılmış Programlama Modeli

Her düğüm NST'nin kütüphane kısmını uyguladıktan sonra, her alt sistem için yalnızca bir program yazması gerekir:

  • Yani her kullanıcıya gönderdiği sembolik dosya
  • NET donanım temsilini siteye özgü bit formatlarına eşler

Çıkarım: Konsol tam olarak kullanılırsa bu beklenen minimum programlamadır

Donanım Optimizasyonu

NST kodlama çevirisi kullanıcı sitesinde kodlandığından:

  1. Donanım Kullanımı: Konsollardaki donanımdan tam olarak yararlanabilir
  2. Genişletilebilirlik: Host'tan yeni çeviri tabloları gerektirmeden donanım özellikleri eklenebilir veya kaldırılabilir
  3. Yerel Kontrol: Yerel kullanıcılar sistem değişiklikleri konusunda güncel tutulur

Otomatik Özellik Yayılımı

  • Host programcıları yeni özellikler eklendikçe sembolik kodlama programını değiştirir
  • Yeni program kullanıcı sitesinde derlenip kullanıldığında
  • Yeni özellikler otomatik olarak dahil edilir, yeni çevirici gerektirmez

Sembolik Çeviri Avantajları

Kodlama çeviri programlarının sembolik olarak (ikili değil) aktarılmasının avantajları:

  1. Siteye Özgü Optimizasyon: Her site uygun gördüğü şekilde çeviri yapabilir
  2. Makine Kod Kalitesi: Üretilen makine kodu her siteye optimal olarak uyar
  3. Performans: Daha hızlı çalışma süreleri ve daha yüksek kod yoğunluğu
  4. Genişletilebilirlik: Kullanıcı sitesinde kodlanan ekstra sembolik programlar kolayca arayüzlenebilir
  5. Problem Çözme: Esneklik kaybı olmadan konsol genişletme problemini (olağandışı tuşlar/düğmeler) kolaylaştırır

Eşleşen Donanım İşleme

Eşleşen donanım olduğunda:

  • Sembolik programlar bunu dikkate alır
  • Gereksiz hesaplamayı önler
  • DEL'in kod çeviri yapıları aracılığıyla hemen mümkündür

AHI NLS - Kullanıcı Konsol İletişimi - Bir Örnek

Blok Diyagram Genel Bakışı

Blok diyagram şunları temsil eder:

  • Sağ taraf: Kullanıcının ana bilgisayarında yapılan fonksiyonlar
  • Sol taraf: Host bilgisayarda yapılan fonksiyonlar

Her etiket, aynı ada sahip bir ifadeye karşılık gelir.

Diyagram ile ilişkili dört bilgi izi (t1-t4 işaretçileri aracılığıyla izlenebilir):

  • İz 1: İleri yön, yalnızca ağ bilgisi
  • İz 2: İleri yön, toplam bilgi akışı
  • İz 3: Geri yön, yalnızca ağ bilgisi
  • İz 4: Geri yön, toplam bilgi akışı

Kullanıcıdan Host'a İletim

Giriş Yolu: Konsoldan Sunucuya

Klavye Girişi

Klavye = kullanıcının konsolundaki giriş aygıtları kümesi

İstasyonlardan gelen giriş bitleri şunlardan geçer:

  1. İzleme seviyeleri
  2. Kesme işleyicileri
  3. Sonunda kodlama çeviricisine ulaşır

Kodlama Çevirisi

Kodlama, yarı-ham giriş bitlerini sunucu-host alt sistemine uygun forma eşler

Kodlama Özellikleri:

  • İlk istendiğinde sunucu-host alt sistemi tarafından sağlanır
  • Kullanıcı makinesine sembolik formda gönderilir
  • Optimal performans için kullanıcı makinesinde derlenir
  • Kesme karakterlerine paketleyebilir
  • Birden çok karakteri tek karaktere (ve tersi) eşleyebilir
  • Karakter çevirisi
  • Kullanıcıya anında geri bildirim

Yerel Görüntü Yönetimi (dm)

Kodlama çeviricisinden anında geri bildirim yerel görüntü yönetimine gider:

  • NET standardından yerel görüntü donanımına eşler
  • Geniş yankı çıkışı yelpazesini işler:
  • Basit karakter yankıları (minimum)
  • Komut ve makine durumu geri bildirimi (yaygın)
  • Sunucu-host'ta yapılmayan kontrol ve geri bildirim fonksiyonları

Örnek: Yüksek hızlı görüntü kullanıcıları Culler görüntüsünde eğrileri seçici olarak temizleyebilir (saklama tüpünde imkansız)

Ağ İletimi

Sunucu-host için kodlama çeviricisinden çıkış:

  1. Görünmez IMP'ye gider
  2. Uygun boyutlara bölünür
  3. Kodlama çeviricisi tarafından etiketlenir
  4. NET-host çeviricisine gider

Not: Çıkış, çevrimiçi girişten daha fazlasını içerebilir:

  • Daha büyük öğeler (bilgisayar tarafından üretilen veriler)
  • Sunucu-host'ta üretilen ve kullanılan ancak kullanıcı-host'ta saklanan dosyalar
  • Zaten sunucu-host formatındaysa çeviriden kaçınabilir
  • Veri bloğu ise çeviriye uğrayabilir

Host Alım Programı (hrp)

Sonunda host'a ulaşır, host alım programından geçmelidir:

  • Standart iletim tarzı paketleri eşler ve yeniden sıralar
  • Host tarafından kabul edilebilir mesajlara dönüştürür
  • Host makine monitörünün bir parçası olabilir

Host'tan Kullanıcıya İletim

Çıkış Yolu: Sunucudan Konsola

Kod Çözme Çevirisi

Sunucu-host'tan çıkış başlangıçta kod çözme'den geçer:

  • Kodlama eşlemesine benzer, belki daha karmaşık çeviri eşlemesi
  • En azından görüntü çıkışını basitleştirilmiş mantıksal-varlık çıkış akışına biçimlendirir
  • Anlamlı parçaları kullanıcı sitesinde çeşitli şekillerde işler

Kod Çözme Programı Özellikleri:

  • Kodlama programı kullanıcı makinesine gönderildiğinde host makinesine gönderilir
  • Başlangıçta sembolik form, host'ta verimli çalışma için derlenir
  • Karakter satırlarını mantıksal olarak tanımlamalıdır (farklı satır genişliklerini işler)
  • Bir tür mantıksal satır tanımlaması gereklidir:
  • Örnek: Düz bir çizgi çizilecekse, 500 kısa vektör yerine bu gerçeği iletin
  • Daha karmaşık yapısal görüntü bilgisi (LEAP benzeri) işler sağlamlaştıkça giderek daha fazla gönderilir
  • Gerçek zamanlı görüntü manipülasyonu sorumluluğunu kullanıcıya daha yakın kaydırır

IMP Kontrol Bilgisi (imp ctrl)

Sunucu-host, IMP'lere kontrol bilgisi göndermek isteyebilir:

  • Biçimlendirme host kod çözücüsü tarafından yapılır
  • Kullanıcı sitesinde uygun montaj/sıralama için mesaj bölünmesi ve tanımlaması

Görünmez IMP

Bilgi, host kod çözücüsünden görünmez IMP aracılığıyla NET-kullanıcı çeviricisine akar:

  • Tek işlem: mesajlar karıştırılabilir

Kullanıcı Alım Çeviricisi (urt)

URT, kullanıcı-site IMP'sinden mesajları kabul eder ve kullanıcı-site görüntüsü için düzeltir

Minimum Eylem: Mesaj parçalarının yeniden sıralanması

Görüntü Kontrolü (dctrl)

Görüntü çıkışı için daha fazlası gerekir:

  • NET mantıksal görüntü bilgisi kullanıcı sitesi formatına konur
  • Görüntü kontrolü bu işi yapar
  • Kodlama ve kod çözme arasında koordine eder
  • Kullanıcı sitesine yerel görüntü yönetimi özelliklerini sunar

Program Kontrolü (prgmctrl)

Başka bir eylem: bilgilerin belirli kullanıcı-site alt sistemlerine seçici çevirisi ve yönlendirilmesi

Örnek: Kayan noktalı bilgi blokları:

  • Kullanıcı tarzı kelimelere dönüştürülür
  • İşleme veya depolama için alt sisteme blok formunda gönderilir
  • Yazdırma-görüntüsü odaklı format yerine hızlı çeviri için uygun kompakt ikili format kullanabilir

Görüntü Çıkışı

Bilgi sonunda kullanıcı görüntüsüne gönderilir

Kullanıcıdan Host'a Dolaylı İletim (ağ modu)

Uzak kullanıcının başka bir düğüm aracılığıyla dolaylı olarak düğüme bağlanabileceği mod


DEL Sözdizimi

NLS Kullanıcıları İçin Notlar

  • Derleyicinin parçası olmayan tüm ifadeler nokta ile bitmelidir
  • DEL derleyicisini derlemek için:
  • İçerik analizleyicisi için desen ayarla
  • Derleyicinin ilk ifadesine atla
  • Derleyiciyi dosyaya çıktı al (/A-DEL)

PROGRAMLAR

Sözdizimi

meta dosya (k=100, m=300, n=20, s=900)
dosya = mesdecl $bildirim $prosedür "FINISH";
prosedür =
procname (
(
tür "FUNCTION" /
"PROCEDURE") .id (tür .id / -boş)) /
"CO-ROUTINE") ' /
$bildirim etiketlenmiş_ifade $(etiketlenmiş_ifade ';) "endp.";
etiketlenmiş_ifade = ((sol ok).id ': / .boş) ifade;
tür = "INTEGER" / "REAL";
procname = .id;

Prosedür Türleri

Fonksiyonlar

  • Derleyicilere daha iyi kod üretiminde yardımcı olmak için farklılaştırılır
  • Değer döndürür
  • Çalışma zamanı kontrolleri sağlar

Prosedürler

  • Değer döndürmez

Eş-rutinler

  • İsimleri veya argümanları yoktur
  • İlk çağrı noktaları pipe bildiriminde verilir

Bildirimler

Sözdizimi

bildirim = sayıtürü / yapılandırılmıştür / etiket / lcl2uhr /
uhr2rmt / pipetürü;
sayıtürü = ("REAL" / "INTEGER") ("CONSTANT" sabitlist /
değişkenlist);
sabitlist =
.id '(sol ok)sabit
$('. .id '(sol ok)sabit);
değişkenlist =
.id ('(sol ok)sabit / .boş)
$('. .id('(sol ok)sabit / .boş));
idlist = .id $('. .id);
yapılandırılmıştür = ("tree" / "pointer" / "buffer") idlist;
etiket = "LABEL1" idlist;
pipetürü = "PIPE" çiftids $(', çiftids);
çiftids = .id .id;
procname = .id;
integerv = .id;
pipename = .id;
etiketv = .id;

Bildirim Özellikleri

  • Sabit Değişkenler: Çalışma zamanında salt okunur belleğe konulabilir
  • Etiket Bildirimi: Etiketlerin makine adreslerini içerebilecek hücreleri bildirir (B5500 etiket bildirimi değil)
  • Pipe Bildirimi: Her çiftin ilk kimliği pipe adı, ikincisi pipe için ilk başlangıç noktasıdır

Aritmetik

İfade Grameri

ifade = "IF" bağlaç "THEN" ifade "ELSE" ifade;
toplam = terim (
'+ toplam /
'- toplam /
-boş);
terim = faktör (
'* terim /
'/ terim /
'^' terim /
.boş);
faktör = '- faktör / bitop;
bitop = tümleyen (
'/' bitop /
'/\' bitop /
'&' bitop /
.boş);
tümleyen = "--" birincil / birincil;

Operatör Notları

  • ^ modülo anlamına gelir
  • /\ özel veya (exclusive or) anlamına gelir
  • Tekli eksi izin verilir ve ayrıştırılır (x*-y yazılabilir)
  • Bitsel operatörlerle standart bir kural yoktur
  • Tüm bitsel operatörler aynı önceliğe sahiptir
  • Gruplama için parantez kullanılmalıdır
  • Tümleyen 1'in tümleyenidir

Önemli Varsayımlar

  • Tüm aritmetik ve bit işlemleri, kodu çalıştıran makinenin modu ve tarzında gerçekleşir
  • Kelime uzunluklarından, ikinin tümleyen aritmetiğinden vb. yararlanan herkes sonunda problemlerle karşılaşacaktır

Birincil

Sözdizimi

birincil =
sabit /
yerleşik /
değişken /
blok /
'(' ifade ')';
değişken = .id (
'(sol ok)' ifade /
'(' blok ')' /
.boş);
sabit = tamsayı / gerçel / dizi;
yerleşik =
mesinfo /
cortnin /
("MIN" / "MAX") ifade $('. ifade) '/';

Özellikler

  • Parantezli İfadeler: İfade serileri olabilir; değer çalışma zamanında yürütülen son ifadenin değeridir
  • Alt rutinler: Bir çağrı-isim-ile argümanına sahip olabilir
  • İfade Karıştırma: İfadeler karıştırılabilir
  • Dizeler: Dokümantasyonda "büyük problem" olarak belirtilmiştir
  • Not: Rulifson ayrıca gerçel sayılardan kurtulmak istiyordu!

Bağlaçlı İfade

Sözdizimi

bağlaç = ayrım ("AND" bağlaç / .boş);
ayrım = olumsuzlama ("OR" olumsuzlama / .boş);
olumsuzlama = "NOT" ilişki / ilişki;
ilişki =
'(' bağlaç ')' /
toplam (
"=" toplam /
'' toplam /
'=' toplam /
'"' toplam /
.boş);

Değerlendirme Optimizasyonu

Bağlaç yapısı şu şekilde yapılandırılmıştır:

  • Toplam olmayan bağlacın değeri olmak zorunda değildir
  • Koddaki atlamalar kullanılarak değerlendirilebilir
  • Referans yalnızca mantıksal karar gerektiğinde yapılır (örneğin, if/while ifadeleri)

Derleyici Optimizasyonu: Çoğu derleyici gereksiz değerlendirmeleri atlayabilmelidir:

  • Yanlış sol kısımlı bağlaç
  • Doğru sol kısımlı ayrım

Aritmetik İfade ve İfadeler

Sözdizimi

ifade = koşullu / koşulsuz;
koşulsuz = döngü_if / durumlar / kontrol_if / uist / ağaç_if /
blok / boş / ifade;
koşullu = "IF" bağlaç "THEN" koşulsuz (
"ELSE" koşullu /
.boş);
blok = "begin" ifade $('; ifade) "end";

İfade Kuralları

  • İfadeler ifade olabilir
  • Koşullu ifadelerde: else kısmı isteğe bağlıdır
  • İfadelerde: else kısmı zorunludur
  • Sözdizimi kuralı sıralamasının yan etkisi

Yarı-Ağaç Manipülasyonu ve Test

Sözdizimi

ağaç_if = işaretçi_ayarla / işaretçi_ekle / işaretçi_sil;
işaretçi_ayarla = "set" "pointer" işaretçiadı "to" işaretçiifade;
işaretçiifade = yön işaretçiifade / işaretçiadı;
işaretçi_ekle = "insert" işaretçiifade "as"
(("left" / "right") "brother") /
(("first" / "last") "daughter") "of" işaretçiifade;
yön =
"up" /
"down" /
"forward" /
"backward" /
"head" /
"tail";
ağaç_değiştir = "replace" işaretçiadı "with" işaretçiifade;
işaretçi_sil = "delete" işaretçiadı;
ağaç = '(' ağaç1 ')';
ağaç1 = düğümadı $düğümadı;
düğümadı = terminal / '(' ağaç1 ')';
terminal = ağaçadı / tamponadı / işaretçiadı;
ağaçadı = id;
ağaç_bildirimi = "pointer" .id / "tree" .id;

Ağaç Oluşturma

Ağaç oluşturmada ekstra parantezler, tıpkı LISP'te olduğu gibi doğrusal alt kategorileştirme ile sonuçlanır


Akış ve Kontrol

Kontrol İfadeleri

kontrol_if = git_if / altrutin_if / döngü_if / durum_if;

GO TO İfadeleri

git_if = "GO" "TO" (etiketv / .id);
etiket_ata = "ASSIGN" .id "TO" etiketv;

Alt rutinler

altrutin_if = çağrı_if / dön_if / cortnout;
çağrı_if = "CALL" procname (ifade / .boş);
dön_if = "RETURN" (ifade / .boş);
cortnout = "STUFF" ifade "IN" pipename;
cortnin = "FETCH" pipename;

Not: FETCH, değeri adlandırılmış eş-rutini çağırarak hesaplanan yerleşik bir fonksiyondur

Döngü İfadeleri

döngü_if = while_if / until_if / for_if;
while_if = "WHILE" bağlaç "DO" ifade;
until_if = "UNTIL" bağlaç "DO" ifade;
for_if = "FOR" integerv '=' ifade ("BY" ifade / .boş) "TO" ifade
"DO" ifadeler;

Döngü Özellikleri

  • While ve until ifadeleri: değer sırasıyla yanlış ve doğru (veya 0 ve sıfır olmayan) olarak tanımlanır
  • For ifadeleri: Başlangıç ifadesini, by kısmını ve to kısmını başlatma zamanında bir kez değerlendirir
  • Çalışan indeks: Döngü içinde değişiklik için kullanılabilir değil, yalnızca okuma için
  • Derleyici Optimizasyonu: Mümkünse kayda koyabilir
  • Artış ve sınır: Her ikisi de başlatma sırasında tamsayılara yuvarlanır

Durum İfadeleri

durum_if = i_durum_if / koşul_durum_if;
i_durum_if = "ITHCASE" ifade "OF" "BEGIN" ifade $(';
ifade) "END";
koşul_durum_if = "CASE" ifade "OF" "BEGIN" koşul_durumlar $('; koşul_durumlar)
"OTHERWISE" ifade "END";
koşul_durumlar = bağlaç ':' ifade;

Değer: Durum ifadesinin değeri, yürütülen son durumun değeridir


Ekstra İfadeler

boş = "NULL";

G/Ç İfadeleri

Mesaj G/Ç

mesaj_if = mesaj_oluştur / mesaj_iste;
mesaj_oluştur_if = mesaj_başlat / mesaj_ekle / mesaj_gönder;
mesaj_başlat = "start" "message";
mesaj_ekle = "append" "message" "byte" ifade;
mesaj_gönder = "send" "message";
mesaj_iste = "demand" "message";
mesinfo =
"get" "message" "byte" /
"message" "length" /
"message" empty: '?;
mes_bildirimi = "message" "bytes" "are" "n" "bits" "long";

Görüntü Tamponları

görüntü_if = tampon_başlat / tampon_ekle / kur;
tampon_başlat = "start" "buffer";
tampon_ekle = "append" tamponmalzeme $('&' tamponmalzeme);
tamponmalzeme =
"parameters" görüntü_param $('. görüntü_param) /
"character" ifade /
"string" dizi /
"vector" ("from" ifade ':' ifade / .boş) "to" ifade '.' ifade /
"position" (açkapa / .boş) "beam" "to" ifade '=' ifade /
"curve";
görüntü_param =
"intensity" "to" ifade /
"character" "width" "to" ifade /
"blink" açkapa /
"italics" açkapa;
açkapa = "on" / "off";
kur = "establish" tamponadı;

Mantıksal Ekran

Ekran Temsili:

  • Kare ekran
  • Normalize koordinatlar: her iki eksende -1 ile +1 arası

Konum Kaydı (PREG):

  • Üçlü: <x, y, r>
  • x, y: ekranda nokta belirtir
  • r: x ekseninden saat yönünün tersine radyan cinsinden dönüş

Yoğunluk (INTENSITY):

  • 0 ile 1 aralığında gerçel sayı
  • 0 = siyah
  • 1 = görüntünün gidebileceği kadar açık
  • Aralarındaki sayılar: yoğunluk farkının göreli logaritması

Diğer Parametreler:

  • Karakter çerçeve boyutu
  • Yanıp sönme biti

Tampon Oluşturma

Terminal Düğümler: Yarı-ağaçlar şunlardan biridir:

  • Yarı-ağaç adları, veya
  • Görüntü tamponları

Görüntü Tamponu: Mantıksal varlıklar dizisi (tamponmalzeme)

Tampon Başlatma:

  • Başlatıldığında boş
  • Başlangıçta parametre eklenmemişse: yarı-ağaçtaki son düğümün görüntüsünün sonundaki parametreler uygulanır
  • Tampon oluşturulurken: mantıksal varlıklar eklenir
  • Kurulmuş tamponadı: tampon kapalı, başka eklemeler yasak
  • Yalnızca kurulmuş tamponadı ağaç oluşturma ifadesinde kullanılabilir

Mantıksal Giriş Aygıtları

  • Değnek (Wand)
  • Oyun Çubuğu (Joy Stick)
  • Klavye
  • Düğmeler
  • Işık Kalemleri
  • Fareler

Ses Çıkış Aygıtları

(Spesifikasyona dahil edilmiş bölüm)


Örnek Programlar

TTY Görüntü ve Klavye Programı

[Görüntü ve klavyeyi TTY olarak çalıştıracak program]

NLS'yi Çalıştırma

Giriş Kısmı

(Belirtilecek)

Görüntü Kısmı

DEMAND MESSAGE;
While LENGTH > 0 DO
ITHCASE GETBYTE OF BEGIN
ITHCASE GETBYTE OF %dosya alanı güncelleme% BEGIN
%literal alanı%
%mesaj alanı%
%ad alanı%
%hata%
%sıra özellikleri%
%filtre özellikleri%
%format özellikleri%
%komut geri bildirim satırı%
%filtre alanı%
%tarih saat%
%yankı kaydı%
BEGIN %DEL kontrolü%

Dağıtım Listesi

İsim Kuruluş Konum Telefon
Steve Carr University of Utah, Department of Computer Science Salt Lake City, Utah 84112 801-322-7211 X8224
Steve Crocker University of California, Boelter Hall Los Angeles, California 213-825-4864
Jeff Rulifson Stanford Research Institute Menlo Park, California 94035 415-326-6200 X4116
Ron Stoughton University of California, Computer Research Laboratory Santa Barbara, California 93106 805-961-3221
Mehmet Baray University of California, Corey Hall Berkeley, California 94720 415-843-2621

Önem

RFC 5, bilgisayar ağları üzerinden etkileşimli konsol iletişimini özellikle işlemek için tasarlanmış ağ farkında bir dil için en erken önerilerden birini temsil eder. Temel yenilikler şunları içerir:

Dil Tasarımı Katkıları

  1. Makine Bağımsızlığı: Evrensel Donanım Temsili, donanım özelliklerini protokolden ayırır
  2. Kaygıların Ayrılması: Kodlama/Kod Çözme paradigması giriş ve çıkışı temiz bir şekilde ayırır
  3. Dağıtık İşleme: Anında geri bildirimin yerel işlenmesi desteği ağ yükünü azaltır
  4. Eş-rutinler: Karmaşık etkileşim kalıpları için eş-rutin yapılarının erken kullanımı

Ağ Mimarisi Çıkarımları

  • Ağ Yükünü Azaltır: Yankı ve anında geri bildirimin yerel işlenmesi
  • Ölçeklenebilir Konsol Desteği: Farklı sitelerde çeşitli donanımı destekler
  • Verimli Bant Genişliği Kullanımı: Ham karakter akışları yerine anlamlı mesajlar gönderir
  • Esnek Sistem Evrimi: Sembolik programlar site genelinde değişiklikler olmadan güncellemeye izin verir

Miras

DEL, şunlar hakkında erken düşünceyi temsil eder:

  • Etki alanına özgü diller (DSL)
  • Protokol soyutlama katmanları
  • Uzak terminal emülasyonu
  • Dağıtık etkileşimli sistemler

Network Working Group

Stanford Research Institute

Haziran 1969