İçeriğe geç

Kitaplar / Yöntem Dil Başvurusu / Ek A — Dilbilgisinin tamamı

Ek A — Dilbilgisinin tamamı

Aşağıdaki kurallar depodaki yontem.gram dosyasının açıklamaları çıkarılmış özetidir. Sözcük tanımları ve ayrıntılı açıklamalar için o dosyaya bakabilirsiniz.

Çıktı
dosya:    birim | program
program:  ['program' AD ayirici] kullan* bildirim* blok ('.' | SON)
birim:    'birim' AD ayirici kullan*
          ['arayüz' kullan* arayuz_bildirimi* 'uygulama' kullan*]
          bildirim* ['başla' deyimler] 'bitir' ['.']
kullan:   'kullan' ','.AD+ ayirici
ayirici:  ';' | satır sonu | SON

bildirim: sabit_bolumu | degisken_bolumu | tip_bolumu | altprogram
arayuz_bildirimi:
          sabit_bolumu | degisken_bolumu | tip_bolumu | altprogram_basligi
sabit_bolumu:    'sabit' (AD [':' tip] ('=' | ':=') ifade ayirici)*
degisken_bolumu: 'değişken' (degisken_grubu ayirici)*
degisken_grubu:  ','.AD+ ':' tip [('=' | ':=') ifade]
               | ','.AD+ ('=' | ':=') ifade
tip_bolumu:      'tip' (AD '=' tip_tanimi ayirici)*
tip_tanimi:      sinif | kayit | tip

tip:        tip_tabani tip_eki*
tip_tabani: 'dizi' | [AD '.'] AD
tip_eki:    'dizisi' | 'listesi' | 'sözlüğü'

sinif:       'sınıf' ['(' AD ')'] sinif_uyesi* 'bitir'
kayit:       'kayıt' kayit_uyesi* 'bitir'
sinif_uyesi: gorunurluk | 'değişken' | metod | degisken_grubu ayirici
kayit_uyesi: gorunurluk | 'değişken' | degisken_grubu ayirici
gorunurluk:  'özel' | 'genel' | 'korumalı' | 'yayınlanmış'
metod:       altprogram_basligi [bildirim* blok ayirici]

altprogram:  altprogram_basligi [bildirim* blok ayirici]
altprogram_basligi:
             ('prosedür' | 'fonksiyon' | 'kurucu') [AD '.'] AD
             [parametreler] [':' tip] ayirici (direktif ayirici)*
direktif:    'sanal' | 'ezer' | 'soyut' | 'ileri' | 'aşırı' | 'statik'
parametreler:
             '(' [parametre_grubu ((';' | ',') parametre_grubu)*] ')'
parametre_grubu:
             ['değişken' | 'sabit'] ','.AD+ [':' tip] [('=' | ':=') ifade]

blok:     'başla' deyimler 'bitir'
deyimler: (deyim ayirici)*
govde:    deyim | boş
deyim:    blok
        | 'eğer' ifade 'ise' govde [[';'] 'değilse' govde]
        | 'tekrarla' deyimler ifade 'olana' 'dek'
        | 'dene' deyimler ['yakala' ['(' AD ')'] deyimler]
          ['sonunda' deyimler] 'bitir'
        | 'fırlat' ifade
        | 'dön' [ifade]
        | 'çık' | 'kır' | 'devam'
        | 'değişken' degisken_grubu
        | ifade AYRILMA ifade YONELME 'kadar' 'her' AD 'için' govde
        | ifade AYRILMA ifade YONELME 'adımda' ifade
          ('artan' | 'azalan') 'her' AD 'için' govde
        | ifade 'içindeki' 'her' AD [',' AD] 'için' govde
        | ifade ('listesindeki' | 'dizisindeki') sonek
          '.' ('elemanı' | 'elemanını') 'Sil'
        | ifade 'iken' govde
        | ifade 'kez' 'tekrarla' govde
        | ifade 'değerine' 'göre' kol*
          ['değilse' [':'] deyimler] 'bitir'
        | sonek (':=' | '+=' | '-=' | '*=' | '/=') ifade
        | ifade
kol:      ','.etiket+ ':' govde ayirici
etiket:   ifade ['..' ifade]

ifade:    veya ('|>' veya)*
veya:     ve (('veya' | 'yada') ve)*
ve:       degil ('ve' degil)*
degil:    'değil' degil | iliski
iliski:   toplama [('=' | '<>' | '<' | '>' | '<=' | '>=' | 'içinde')
          toplama]
toplama:  carpma (('+' | '-') carpma)*
carpma:   tekli (('*' | '/' | '@' | 'böl' | 'mod') tekli)*
tekli:    ('-' | '+') tekli | '@' sonek | sonek ['**' tekli]
sonek:    birincil sonek_eki*
sonek_eki:
          '(' [','.arguman+] ')' | '[' ','.ifade+ ']' | '.' (AD | AS)
arguman:  ifade [':' ifade [':' ifade]]
birincil: SAYI | METIN | AD | 'doğru' | 'yanlış' | 'boş' | 'kendi'
        | 'eğer' ifade 'ise' ifade 'değilse' ifade
        | 'miras' [AD]
        | ('fonksiyon' | 'prosedür') [parametreler] [':' tip]
          ('=>' ifade | bildirim* blok)
        | '(' ifade ')'
        | '[' ']' | '[' ':' ']'
        | '[' ifade '..' ifade ']'
        | '[' ifade ':' ifade (',' ifade ':' ifade)* [','] ']'
        | '[' ','.ifade+ [','] ']'