Eiffel: Sintaksis |
Original URL: http://www.gobosoft.com/eiffel/syntax/index.html
Translation by: Qalina Najafova
Burada təsvir edilən şərhli Eiffel sintaksisi bəzi məsləhətlərdən və fəndlərdən faydalanmaq istəyən tərtibçilər, tərcüməçilər, sintaksis yoxlayıcıları, qısa və düz alətlər, yaraşıqlı printerlər və s. kimi Eiffel alətlərinin müəllifləri üçün nəzərdə tutulub. Bu Eiffel üçün Qeyri-kommersiya Beynəlxalq Konsorsiumu ( NICE ) tərəfindən təqdim edilən rəsmi Eiffel sintaksisi spesifikasiyası olmasa da , o, yalnız iki və ya üç yaxşı sənədləşdirilmiş vəziyyətdə ondan ayrılır. Xüsusilə, mövcud kompilyatorların Eiffel sintaksisini harada və bəzən nə üçün genişləndirdiyini izah edir.
Eiffel sintaksisi konstruksiyaları Class_declaration kimi yüksək səviyyəli konstruksiyalardan başlayaraq İdentifikator kimi leksik komponentlərə qədər qruplara bölünür . Alternativ olaraq, bu konstruksiyalar da əlifba sırası ilə verilir . Eiffel sintaksisini təsvir etmək üçün istifadə edilən qeyd başqa yerdə göstərilmişdir. Eiffel sintaksisinin yacc və lex formatında mümkün tətbiqi də nümunə kimi təqdim olunur.
Qeyd : Əksər Eiffel tərtibçiləri isteğe bağlı şərhin etibarlılığını end açar sözündən sonra yoxlamırlar. SmallEiffel bir xəbərdarlıq yayır.
Qeyd : Faylda birdən çox sinif bəyannaməsi ola bilər. Bununla belə, Eiffel tərtibatçılarının əksəriyyətində fayl başına bir sinif məhdudiyyəti var.
Qeyd : Ayrı açar sözüEiffel standartının bir hissəsi deyil. SCOOP mexanizmini dəstəkləmək üçün ISE Eiffel-də təqdim edilmişdir. Ətraflı məlumat üçün Obyekt yönümlü proqram təminatının qurulması , ikinci nəşrioxuyun
Qeyd : Formal generiklərin siyahısı boş ola bilər. Nəticədə, FOO [] etibarlıdır və FOO ilə eyni deməkdir . Ancaq bu tövsiyə olunan üslub deyil.
sinif FOO miras BAR son
Son açar sözü Class_declaration konstruksiyasının bir hissəsi kimi deyil, isteğe bağlı Feature_adaptation hissəsi kimi nəzərdən keçiriləcək .
Bu problemi həll etməyin bir yolu, Feature_adaptation- da açar sözün sonuna yalnız Feature_adaptation- u təşkil edən əlavə konstruksiyalardan ən azı biri mövcud olduqda icazə vermək olardı .
Qeyd : Standart sintaksis Prosedur_siyahısı əvəzinə Xüsusiyyətlər_siyahısı tələb edir , lakin Yaradılma_bəndi əslində yaratma prosedurunun adlarını sadalayır (VGCP-2).
Qeyd : Prefiks və İnfiks prosedur adları deyil, funksiya adlarıdır. Prefiksin atribut adı ola biləcəyi mənə aydın deyil, lakin o, mütləq prosedur adı deyil (baxın etibarlılıq qaydasıVFFD-5).
Qeyd : Bütün Eiffel tərtibçiləri hərf hərfindən asılı olmayaraq prefiks və infiks operatorlarını qəbul edirlər, məsələn, "NOT" prefiksi və ya "AnD" infiksi .
Qeyd : Birinci və ya sonuncu qoşa sitatdan əvvəl heç bir müdaxilə simvoluna icazə verilmir. Lakin və sonra və ya başqa iki açar söz arasında hansı növ fasilədən istifadə edilməli olduğu aydın deyil. SmallEiffel istənilən sayda blankı və nişan simvolunu qəbul edir, digər tərtibçilər isə tək blank tələb edir.
Qeyd : Müəssisə bəyannamələrinin siyahısı boş ola bilər. Nəticədə, foo () etibarlıdır və foo ilə eyni deməkdir . Ancaq bu üslub tövsiyə edilmir.
Qeyd : Əksər Eiffel tərtibçiləri isteğe bağlı şərhin etibarlılığını end açar sözündən sonra yoxlamırlar. Artıq bu şərhi yazmaq üslub qaydalarına daxil deyil.
Qeyd : Hər bir Eiffel tərtibçisi digər proqramlaşdırma dilləri ilə interfeysini təsvir etmək üçün dil adında və xarici ad sətirlərində öz mini-sintaksisini dəstəkləyir. Ətraflı məlumat üçün müxtəlif kompilyatorlarla gələn sənədlərə baxın.
Qeyd : Başlıq şərhləri kimi şərhlər Rutin və ya Xüsusiyyətlər kimi bəzi konstruksiyalarda gözlənilsə də , şərhə məhəl qoymamağın sintaksis xətası və ya yanlış sintaksis ağacı ilə nəticələndiyi yeganə yer budur. Bu, aşağıdakı hallarda baş verir:
tələb etiketi : -- Diqqət edilmədikdə sintaksis xətası! et
və
tələb etiketi : -- Bu şərh nəzərə alınmazsa, -- etiket səhv olacaq-- foo ilə əlaqələndirilir . etibarlıdır ! foo . etibarlıdır
Ətraflı məlumat üçün Şərhdə ikinci qeydə baxın .
Qeyd : Etibarlılıq qaydasıVXRTbildirir ki, Yenidən cəhd təlimatı yalnız xilasetmə bəndində etibarlıdır. Bu, nəhayət, sintaksis tərəfindən həyata keçirilə bilər.
Qeyd : Standart Eiffel sintaksisi həmçinin Formal_generic_name Növ üçün mümkün alternativ kimi. Lakin o, sintaksisdə qeyri-müəyyənlik yaratdı, çünki identifikator həm Formal_generic_name , həm dəfaktiki generikləri olmayan Class_type kimi tanınır.
Qeyd : Növlərin siyahısı boş ola bilər. Nəticədə, FOO [] etibarlıdır və FOO ilə eyni deməkdir . Ancaq bu tövsiyə olunan üslub deyil.
Qeyd : Class_type_separate Eiffel standartının bir hissəsi deyil. SCOOP mexanizmini dəstəkləmək üçün ISE Eiffel-də təqdim edilmişdir. Ətraflı məlumat üçün Obyekt yönümlü proqram təminatının qurulması , ikinci nəşrioxuyun
Qeyd : Standart sintaksisdə Bit_length əvəzinə Constant görünür .VTBTetibarlılıq qaydası bildirir ki, Bit_type bəyannaməsi yalnız və yalnız onun Sabiti INTEGER tipli olduqdaetibarlıdır, bu o deməkdir ki, sabit ya manifest tam ədəd sabiti, ya da atribut sabitidir.
Qeyd : Növ yoxdursa, iki nida işarəsi fasilə ilə və ya fasiləsiz yazıla bilər. Stil standartında tövsiyə olunan forma fasiləsiz formadır ki, bu da !! vahid leksik simvol kimi görünür.
Qeyd : Standart Eiffel sintaksisində Yaradılma_zəngi Qeyri-İxtisaslı_zəngdən hazırlanır.VGCC-6etibarlılıq qaydasıbildirir ki, əgər f Yaradılma_zənginin xüsusiyyətidirsə, f prosedurdur.
Qeyd : Seçimlər siyahısı boş ola bilər. Nəticə kimi,
sonra bir şey etdikdə ifadəni yoxlayın ...
mənasız olsa da, sintaktik cəhətdən düzgündür. kimi düşünmək olar
Əgər Yalan varsa nəsə et ...
Ancaq bu tövsiyə olunan üslubun bir hissəsi deyil.
Qeyd : Standart sintaksis Choice_constant əvəzinəSabiti. Bununla belə , VOMB-1-2etibarlılıq qaydasıbildirir ki, Seçimvə İntervaldakı Sabit yalnız INTEGER və ya CHARACTER tiplidir.
Qeyd : Aşağıdakı misalda leksik analizator kifayət qədər ağıllı olmalıdır:
1..2 olduqda ifadəni yoxlayın , sonra ...
Həqiqətən də, ' 1..2 ' ardıcıl iki real sabit ' 1. ' və ' .2 ' əvəzinə Eiffel simvolu ' .. ' ilə ayrılmış iki tam ədəd ' 1 ' və ' 2 ' sabitləri kimi tanınmalıdır . Vizual Eiffel yuxarıdakı nümunəni təhlil edərkən səhvən sintaksis xətası verir.
Qeyd : TowerEiffel Seçim və Intervalda "uzaqdan sabit" qəbul edir, məsələn:
foo : FOO foo olduqda i yoxlayır . const sonra bir şey bitir
burada const FOO sinfində sabit elan edilir . Bu standart Eiffel sintaksisi deyil.
Qeyd : VAVE etibarlılıq qaydasıifadə edir ki, İfadə INTEGER tipli olmalıdır. Bu, Bərabərlik , Manifest_array , Strip və bütün tam olmayan Manifest_constant s-ni ləğv etməklə nəhayət sintaksisdə qismən tətbiq edilə bilər.
Qeyd : Etibarlılıq qaydasıVXRTbildirir ki, Yenidən cəhd təlimatı yalnız Xilasetmə bəndində etibarlıdır. Bu, nəhayət, sintaksis tərəfindən həyata keçirilə bilər.
Qeyd : Bu təlimatın sırf sintaktik rolu var: Mürəkkəyə nəzarət yolu ilə əlavə edilmiş əlavə nöqtəli vergüllərin zərərsiz olduğundan əmin olmaq.
əgər c onda ; i1 ;;; i2 ; başqa ;; son
TowerEiffel terminatorlardan başqa əlavə nöqtəli vergülləri dəstəkləmir. Bütün digər kompilyatorlar gözlənildiyi kimi işləyir. SmallEiffel əlavə nöqtəli vergülləri təhlil edərkən xəbərdarlıq verir.
Qeyd : Zəngin bu spesifikasiyasıstandartda verilmiş versiyadan bir qədər fərqlidir. Bununla belə, standart sintaksis düzgün Eiffel olmayan konstruksiyaları qəbul edir, məsələn:
foo . Nəticə cari ( 5 )halbuki yuxarıda verilmiş spesifikasiya yoxdur.
Qeyd : TowerEiffel-də funksiyalar sabitin ətrafında mötərizə qoymadan birbaşa Manifest_constant -da çağırıla bilər, məsələn:
küç := 'a' . həyatastandart sintaksisdən istifadə edərək olmalıdır:
küç := ( 'a' ). həyataBaxmayaraq ki, Integer_constant ilə kiçik bir leksik problem var
123.outkimi tanınır
123. çıxdı'123.' Real_sabit olmaq . Proqramçı bu problemi həll etmək üçün tam ədəd sabiti ilə nöqtə arasında əlavə fasilə əlavə etməlidir .
Qeyd : Prekursorkonstruksiyası standart Eiffel sintaksisinin bir hissəsi deyil . O , Obyekt yönümlü Proqram Təminatında , ikinci nəşrdə təqdim edilmişdirNICE-ə təqdim edilmişdir. ISE Eiffel və Halstenbach çox güman ki, növbəti buraxılışlarında bu quruluşu dəstəkləyəcəklər.
Qeyd : Obyekt yönümlü proqram təminatının konstruksiyasında , ikinci nəşrdə, Parent_qualification -da sinif adı qoşa mötərizələr arasında bağlanmışdır: {{ Class_name }} .NICE-ə təqdim edilən təklif yuxarıda göstərilən sintaksisdən istifadə edir.
Qeyd : VFFD-5 etibarlılıq qaydasına əsasən, Atribut həm də Prefiks ola bilər.
Qeyd : Standart sintaksis spesifikasiyasından Müəssisə sintaksisqrupu bir çox qeyri-müəyyənliyi həll etmək üçün çox sadələşdirilmişdir. Məsələn, olmalıdır:
foo
Atribut , Yerli və ya Formal kimi tanınmalıdır ? Yalnız semantik təhlil cavab verə bilər.
Qeyd : Faktiki olanların siyahısı boş ola bilər. Nəticədə, foo () etibarlıdır və foo ilə eyni deməkdir . Ancaq bu üslub tövsiyə edilmir.
Qeyd : TowerEiffel Ünvanı normal ifadə kimi qəbul edir (yəni İfadə konstruksiyasında alternativ kimi). Nəticədə ünvanın yalnız faktiki siyahılarda olması lazım deyil.
Qeyd : İfadənin bu spesifikasiyasıstandartda təqdim olunan versiyadan bir qədər fərqlidir. Birincisi, Zəng üçün yeni spesifikasiyanın nəticəsi olaraq Cari və Nəticə əlavə edildi . Sonra, Manifest_constant alternativlərinin siyahısı ilə əvəz edilmişdir. Bu standart sintaksisdəki qeyri-müəyyənliyi aradan qaldırmaq üçündür. Aşağıdakı kod parçasında:
foo := - 2
tapşırığın sağ tərəfindəki İfadə Tam_sabit və ya Prefiks_operatoru ' - ' və İfadəsi (imzasız) Tam ədəd olan Birlik_ifadəsi kimi tanınmalıdırmı ? Integer_constant və Real_constant'ı Tam və Real ilə əvəz etmək problemi həll edir.
Qeyd : Wide_character_constant , Wide_manifest_string və Hexadecimal_constant standartın bir hissəsi deyil. Onlar TowerEiffel-də geniş simvolları və sətirləri və onaltılıq tam ədədləri dəstəkləmək üçün təqdim edilmişdir.
Qeyd : Etibarlılıq qaydasıVWBE bildirir ki, mantiq ifadəsi BOOLEAN tipində olmalıdır. Bu, nəhayət, Manifest_array , Strip və bütün qeyri-boole Manifest_constant s-ni ləğv etməklə sintaksisdə qismən tətbiq edilə bilər.
Qeyd : Wide_character_constant , Wide_manifest_string və Hexadecimal_constant standartın bir hissəsi deyil. Onlar TowerEiffel-də geniş simvolları və sətirləri və onaltılıq tam ədədləri dəstəkləmək üçün təqdim edilmişdir.
Qeyd : Burada standart sintaksisdə qeyri-müəyyənlik var. Aşağıdakı kod parçasında:
foo := - 2
tapşırığın sağ tərəfindəki İfadə Tam_sabit və ya Prefiks_operatoru ' - ' və İfadəsi (imzasız) Tam ədəd olan Birlik_ifadəsi kimi tanınmalıdırmı ? Bu, İfadə üçün spesifikasiyanın yenidən yazılması ilə cari sintaksis təsvirində həll edilmişdir .
Qeyd : Wide_character_constant standartın bir hissəsi deyil. Geniş simvolları dəstəkləmək üçün TowerEiffel-də təqdim edilmişdir.
Qeyd : Dollar işarəsi ilə Character_constant arasında heç bir müdaxilə simvoluna icazə verilmir .
Qeyd : Wide_manifest_string standartın bir hissəsi deyil. Sətirlərdə geniş xarakterləri dəstəkləmək üçün TowerEiffel-də təqdim edilmişdir.
Qeyd : Dollar işarəsi ilə Manifest_sətri arasında heç bir müdaxilə simvoluna icazə verilmir .
Qeyd : Təəssüf ki, SmallEiffel hərflərə həssasdır. (Təəccüblüdür ki, Reserved_word s üçün hərflərə həssas deyil.)
Qeyd : İdentifikator yalnız və yalnız Reserved_word s -dən biri olmadığı təqdirdə etibarlıdır.
Qeyd : TowerEiffel funksiya adlarında və sinif adlarında bitişik alt xətt işarələrini idarə edə bilməz.
Qeyd : Alt xətt ilə bağlı son iki məhdudiyyət gələcəkdə istənilən sayda rəqəm qruplarına icazə verməklə silinə bilər.
Qeyd : Integer_constant- dan fərqli olaraq, Tam ədədin işarəsi yoxdur.
Qeyd : Minimum tam dəyər problemindən xəbərdar olun! Məsələn, tam ədədlərin 32 bitdə saxlandığı platformalarda aşağıdakı Eiffel kodu etibarlıdır:
Minimum_integer : INTEGER - 2_147_483_648 -- INTEGER tipli ən kiçik dəstəklənən dəyərlakin təhlilçi kifayət qədər ağıllı olmalıdır, əks halda o, 32 bitə sığmayan 2147483648 tam ədədinin ardınca birinar minus oxuyacaq və buna görə də daşmağa səbəb olacaq.
Qeyd : Hexadecimal_constant standartın bir hissəsi deyil. Hexadecimal tam ədədləri dəstəkləmək üçün TowerEiffel-də təqdim edilmişdir.
Qeyd : Hexadecimal sabitlərdə alt xəttlərə icazə verilib-verilmədiyi aydın deyil.
Qeyd : Tövsiyə olunan üslub e deyil, E istifadə etməkdir .
Qeyd : Real_constant- dan fərqli olaraq Realda heç bir işarə yoxdur.
Qeyd : İnteqral və kəsr hissələrin hər ikisinin olmaya biləcəyini bildirən məhdudiyyət leksik cəhətdən vacibdir. Əks halda aşağıdakı kod parçası
a.e1kimi skan edilə bilər
a .e1əvəzinə
a . e1'.e1' real olaraq tanınır.
Qeyd : Çap edilə bilən simvollara, bu halda, boşluqlar və nişan simvolları daxildir, lakin yeni sətirlər deyil. Bunu Free_operator ilə müqayisə edin.
Qeyd : Çap edilə bilən simvollara, bu halda, boşluqlar və nişan simvolları daxildir, lakin yeni sətirlər deyil. Bunu Free_operator ilə müqayisə edin.
Qeyd : Tövsiyə olunan üslub b deyil, B istifadə etməkdir .
Qeyd : Çap edilə bilən simvollara Break s -də icazə verilən simvollar daxil deyil. Bunu Character_constant ilə müqayisə edin.
Qeyd : Aşağıdakı kod
a@1kimi skan edilir
a @1sintaktik cəhətdən düzgün olmayan. Ətraflı məlumat üçün Eiffel gotchas-a baxın .
Qeyd : Eiffel: Dil , ikinci çap,pulsuz operatorlarda Xüsusi_xarakterlərə (çap olunsa da) imkan verir. Heç bir Eiffel tərtibçisi bunu dəstəkləmir.
Qeyd : SmallEiffel və Visual Eiffel pulsuz operatorlar üçün hərflərə həssasdır.
Qeyd : Windows kimi bəzi platformalar yeni sətirdən əvvəl daşıma qaytarma simvolu qoyur. Belə hallarda vaqonun qaytarılmasını fasilə təşkil edən dördüncü mümkün simvol kimi nəzərdən keçirmək daha asandır.
Xarakter | Kod | Mnemonik ad |
@ | %A | T işarəsi |
BS | %B | B boşluq |
^ | %C | C ircumflex |
$ | %D | D olur |
FF | %F | F orm yemi |
\ | %H | backslas H |
~ | %L | ti L da |
NL (LF) | %N | N ewline |
` | %Q | geri Sitat |
CR | %R | vaqon R dön |
# | %S | S arfa |
HT | %T | üfüqi T ab |
NUL | %U | n Ull xarakter |
| | %V | V şaquli bar |
% | %% | faiz |
' | %' | tək sitat |
" | %" | ikiqat sitat |
[ | %( | açılış mötərizəsi |
] | %) | bağlama mötərizəsi |
{ | %< | açılış braketi |
} | %> | bağlama mötərizəsi |
Qeyd : Əksər Eiffel kompilyatorları yuxarıdakı cədvəldə %K ardıcıllığı göstərilmədikdə sintaksis xətası verirBununla belə, Visual Eiffel hesab edir ki, %K ardıcıllığı yuxarıdakı cədvəldə göstərilmədikdə K simvolunu təmsil edirNəticədə %P P simvolunu, %D isə $ simvolunu ifadə edir.
Qeyd : Test etdiyim bütün Eiffel tərtibçiləri (yəni, ISE Eiffel, Halstenbach, SmallEiffel, Visual Eiffel, TowerEiffel) yuxarıdakı cədvəldən xüsusi simvol kimi tanınması üçün %K hərfində K hərfinin böyük hərf olmasını gözləyirlər. Nəticədə %d və %D eyni hesab edilmir.
Qeyd : Kod tam ədədində alt tirelərə icazə verilib-verilmədiyi mənə aydın deyil(xüsusilə bu, geniş xarakterli kod olduqda).
Qeyd : Rəsmi sintaksis spesifikasiyası qorunan sözlər kimi aşağıdakı sinif adlarını sadalayır: BOOLEAN , CHARACTER , DOUBLE , INTEGER , NONE , POINTER , REAL , STRING . Mən başa düşürəm ki, bu siniflər Eiffel tərtibçiləri tərəfindən tanınmalıdır, lakin onların nə üçün ehtiyat sözlər olması lazım olduğunu anlamıram. Nəzərə alın kiNüvə Kitabxana Standartından HƏR , ÜMUMİ , PLATFORM və bir çox başqa sinif adları da siyahıda yoxdur! Üstəlik, bu sinif adları sintaksis konstruksiyalarının heç bir yerində görünmür. Nəhayət, yalnız Visual Eiffel bu sinif adlarını qorunan sözlər hesab edir.
Qeyd : Eiffeldə : Dil , ikinci çap, False , Strip , True və Unique açar sözlər hesab olunur. Mən bu fikri bölüşmürəm.
Qeyd : SmallEiffel İdentifikatorla bağlı hərf hərfinə həssas olsa da, hərf hərfinin ayrılmış sözlər üçün əhəmiyyətli olmadığını hesab edir!
Qeyd : Prekursor standart sintaksisin bir hissəsi deyil. Prekursor mexanizmini dəstəkləmək üçün təqdim edilmişdir.
Simvol | assosiativlik |
. | sol |
old not unary + unary - Bütün pulsuz unar operatorlar |
|
Bütün pulsuz ikili operatorlar | |
^ | sağ |
* / // \\ |
sol sol sol sol |
ikili + ikili - |
sol sola |
= /= < > <= >= |
sol sol sol sol sol sol sol |
və sonra | sol sola |
və ya başqa xor |
sol sol sol |
nəzərdə tutur | sol |
Qeyd : Eiffel tərtibatçılarının aşağıdakı kod parçasını rədd etmələrinin səbəbi:
foo := 1 < 2 < 3ona görə deyil ki, müqayisə operatorları assosiativ deyil. Bu operatorlar həqiqətən assosiativ olaraq qalırlar. Yuxarıdakı kod sintaktik cəhətdən düzgündür, lakin sadəcə rədd edilir, çünki ' 1 < 2 ' BOOLEAN tiplidir və heç bir xüsusiyyət yoxdur:
infiks "<" ( i : INTEGER ): SOME_TYPEBOOLEAN sinfində .
foo ( ifadə ). bar
Qeyd : Bəzi konstruksiyalar üçün bəzi Eiffel tərtibçiləri nöqtəli vergülləri terminator kimi qəbul edəcək, onları məcburi hesab edəcək və ya çatışmazlıq olduqda sadəcə xəbərdarlıq edəcək.
Qeyd : Bu Şərhin rəsmi təsviri deyil.şərhdə faiz simvoluna ( % ) niyə açıq formada icazə verilmədiyini (yəni Xüsusi_xarakterin bir hissəsi deyil ) görə bilmədim
Qeyd : Şərhlərin iki növü var: pulsuz şərhlər və gözlənilən şərhlər. Pulsuz şərhlər bəzi alətlər tərəfindən ləğv edilə bilər. Bununla belə, gözlənilən şərhlər dörd konstruktun bir hissəsi kimi görünür: Rutin , Təsdiq_bəndi , Yaradılma_bəndi və Xüsusiyyət_bəndi və qısa köməkçi proqram kimi alətlər tərəfindən işlənməlidir. Baxmayaraq ki, Routine , Creation_clause və Feature_clause , başlıq şərhi isteğe bağlıdır və çox zərər vermədən nəzərə alınmasa da, Assertion_clause- da bu məcburidirvə ona məhəl qoymamaq sintaksis xətası olardı. Bu gözlənilən şərhləri həyata keçirmək üçün həll yolu leksik bağlardan istifadə etmək ola bilər.
Qeyd : TowerEiffel Features konstruksiyasında xüsusiyyət açar sözü ilə isteğe bağlı Müştərilər arasında şərh görünəndə səhvən sintaksis xətası verir. Bu, yəqin ki, yuxarıda təklif olunan leksik birləşmələrin istifadəsinin ikinci dərəcəli təsiridir.
Qeyd : Aşağıdakı Rutin bəyannamədə:
foodur -- Bu ilk şərhdir. -- Bu ikinci şərhdir. -- Bu üçüncü şərhdir. et ... sonüç şərhdən hansının gözlənilən Header_comment və digər iki pulsuz şərhin hansı olduğu aydın deyil . TowerEiffel başlıq şərhi olmaq üçün ilk şərhi seçdi. ISE Eiffel, Halstenbach və Visual Eiffel kimi bəzi digər tərtibçilər əslində üç şərhi başlıq şərhinə çevrilən birinə birləşdirirlər.
Qeyd : Bəzi Eiffel tərtibçiləri ' -- |'başlıq şərhlərində sadəcə ' -- ' əvəzinə