Зарезервоване слово

Зарезервоване слово (або ключове слово) - в мовах програмування слово, що має спеціальне значення. Ідентифікатори з такими іменами заборонені.

В лексичному аналізі зарезервоване слово фігурує як одна лексема особливого типу.


1. Приклади

  • В Паскалі можна створити змінну const - це слово призначене для завдання констант.
  • В Асемблері для x86 в якості ідентифікаторів заборонені імена регістрів ( ax, di); методи адресації ( near, far) і т. д.

2. Директива

Директива - слово, яке є зарезервованим виключно в своєму контексті; ідентифікатори з такими іменами цілком можливі. В Паскалі директивами є слова read, write, forward, near, far і деякі інші.

Наприклад, у коді

 property  XXX  :  integer  read  fXXX  write  SetXXX  ; 

read і write є директивами, на відміну від ідентифікатора write в коді

 write  (  x  )  ; 

3. Зарезервовані слова та язиконезавісімая специфікація

Зарезервовані слова представляють певну проблему при перекладі тексту з мови на мову (а іноді навіть з компілятора на компілятор) і при написанні ПО, різні частини якого написані на різних мовах - може статися, що на мові А буде створений ідентифікатор, який є зарезервованим словом мови Б і тому він виявиться недоступним. Зазвичай намагаються уникати слів, які в якомусь із широко відомих мов є зарезервованими. Втім, буває, що при розширенні мови слово з дозволеного переходить в зарезервовані. Ось кілька способів вирішення цієї проблеми.

  • Угорська нотація та інші подібні способи іменування змінних роблять ідентифікатори свідомо відмінними від ключових слів будь-якої мови.
  • . NET вимагає, щоб всі сумісні мови дозволяли будь-яким чином задавати ідентифікатор, що співпадає з ключовим словом. Наприклад, в C # слово this є зарезервованим, а @this - ідентифікатором. Аналогічно вчинили у вбудованому асемблері Паскаля : eax - зарезервоване слово (назва регістра), &eax - ідентифікатор.
  • В Сі всі нестандартні (виробнику-й платформозавісімие) зарезервовані слова починаються з двох знаків підкреслення. Наприклад, в C Builder може бути такий запис:
 __fastcall  int  DoSomething  (  int  x  ) 
В даному випадку платформозавісімое зарезервоване слово __fastcall ( угоду виклику) пишеться з двома знаками підкреслення.