Wirth sözdizimi gösterimi - Wirth syntax notation - Wikipedia

Wirth sözdizimi gösterimi (WSN) bir meta sözdizimi yani resmi bir açıklama yolu resmi diller. Başlangıçta öneren Niklaus Wirth 1977'de alternatif olarak Backus-Naur formu (BNF). Açık bir yineleme yapısı içermesi ve boş dizge için açık bir sembolün ( veya ε gibi) kullanılmasını engellemesi bakımından BNF'ye göre birçok avantajı vardır.[1]

WSN birkaç Uluslararası standartlar ile başlayarak ISO 10303-21.[2] Ayrıca sözdizimini tanımlamak için kullanıldı EKSPRES, veri modelleme dili ADIM.

WSN kendi içinde tanımlandı

 SÖZDİZİMİ = { ÜRETİM } . ÜRETİM = TANIMLAYICI "=" İFADE "." . İFADE = SÜRE { "|" SÜRE } . SÜRE = FAKTÖR { FAKTÖR } . FAKTÖR = TANIMLAYICI            | LİTERAL            | "[" İFADE "]"            | "(" İFADE ")"            | "{" İFADE "}" . TANIMLAYICI = mektup { mektup } . LİTERAL = """" karakter { karakter } """" .

Eşittir işareti bir üretimi belirtir. Soldaki öğe, sağdaki öğelerin birleşimi olarak tanımlanmıştır. Bir üretim, tam bir durdurma (dönem) ile sonlandırılır.

  • Tekrar, küme parantezleri ile gösterilir, Örneğin., {a} duruyor ε | a | aa | aaa | ....
  • Opsiyonellik köşeli parantezlerle ifade edilir, Örneğin., [a] b duruyor ab | b.
  • Parantezler gruplandırmaya hizmet eder, Örneğin., (a | b) c duruyor ac | M.Ö.

Bu kavramları bugün verili kabul ediyoruz, ancak bunlar 1977'de yeni ve hatta tartışmalıydı. Wirth daha sonra bazı kavramları (farklı bir sözdizimi ve gösterimle) genişletilmiş Backus – Naur formu.

Dikkat edin mektup ve karakter tanımsız bırakılır. Bunun nedeni, tanımlanmakta olan dile bağlı olarak sayısal karakterlerin (0'dan 9'a kadar olan rakamlar) her iki tanıma da dahil edilebilmesi veya bir taneden çıkarılabilmesidir. Örneğin.:

 hane = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" . büyük harf = "A" | "B" |  | "Y" | "Z" . küçük harf = "a" | "b" |  | "y" | "z" . mektup = büyük harf | küçük harf .

Eğer karakter dahil etmeye devam ediyor hane ve diğer yazdırılabilir ASCII karakterler, sonra daha da uzaklaşır mektup, hangisinin rakam karakterleri veya özel (non-alfanümerik ) karakter.

Başka bir örnek

BNF'nin sözdizimi, çeviriye bağlı olarak WSN ile aşağıdaki gibi temsil edilebilir kendi BNF örneği:

 sözdizimi = kural [ sözdizimi ] . kural = beyaz alanı tercih et "<" kural adı ">" beyaz alanı tercih et "::="                   opt-whitespace ifadesi satır sonu . beyaz alanı tercih et = { " " } . ifade = liste [ "|" ifade ] . satır sonu = opt-whitespace EOL | satır sonu satır sonu . liste = dönem [ opt-whitespace listesi ] . dönem = gerçek | "<" kural adı ">" . gerçek = """" Metin """" | "'" Metin "'" .

Bu tanım aşırı karmaşık görünmektedir çünkü "isteğe bağlı" kavramı Beyaz boşluk "BNF'de açıkça tanımlanmalıdır, ancak WSN'de örtüktür. Bu örnekte bile, Metin tanımsız bırakılır, ancak "ASCII karakteri {ASCII-karakteri}". (EOL ayrıca tanımsız bırakılır.) Kludge "<" kural adı ">" iki kez kullanıldı çünkü Metin açıkça tanımlanmadı.

Bu örneğin gösterdiği BNF ile ilgili sorunlardan biri, hem tek tırnaklı hem de çift tırnaklı karakterlerin bir gerçek, makine tarafından okunabilir bir sözdizimi oluşturmaya çalışırken insan hatası için ek bir potansiyel vardır. Daha sonraki meta sözdizimlerine taşınan kavramlardan biri, kullanıcıya birden çok seçenek vermenin, sözdizimi tarafından tanımlanan gramerler için ayrıştırıcılar yazmayı zorlaştırdığı, dolayısıyla genel olarak bilgisayar dillerinin nasıl daha kısıtlayıcı hale geldiği fikriydi. alıntılanmış tanımlanmış.

Referanslar

  1. ^ Wirth, Niklaus (Kasım 1977). "Sözdizimi Tanımları için Notasyonların Gereksiz Çeşitliliği Konusunda Ne Yapabiliriz?". ACM'nin iletişimi. 20 (11): 822–823. doi:10.1145/359863.359883.
  2. ^ "ISO 10303-21, Endüstriyel otomasyon sistemleri ve entegrasyon - Ürün veri gösterimi ve değişimi - Bölüm 21: Uygulama yöntemleri: Değişim yapısının açık metin kodlaması". Uluslararası Standardizasyon Örgütü. 2002-01-24. Alıntı dergisi gerektirir | günlük = (Yardım)