<<
>>

Объявления

Очевидно на следующем шаге необходимо решить, что мы подразумеваем под объявлением. Я намереваюсь иметь два вида объявлений: переменных и процедур/функций. На верхнем уровне разрешены только глобальные объявления, точно как в C.

Сейчас здесь могут быть только объявления переменных, идентифицируемые по ключевому слову VAR (сокращенно "v").

::= ( )*

::= VAR

Обратите внимание, что так как имеется только один тип переменных, нет необходимости объявлять этот тип. Позднее, для полной версии KISS, мы сможем легко добавить описание типа.

Процедура Prog становится:

{–}

{ Parse and Translate a Program }

procedure Prog;

begin

Match('p');

Header;

TopDecls;

Main;

Match('.');

end;

{–}

Теперь добавьте две новые процедуры:

{–}

{ Process a Data Declaration }

procedure Decl;

begin

Match('v');

GetChar;

end;

{–}

{ Parse and Translate Global Declarations }

procedure TopDecls;

begin

while Look 'b' do

case Look of

'v': Decl;

else Abort('Unrecognized Keyword ''' + Look + '''');

end;

end;

{–}

Заметьте, что на данный момент Decl – просто заглушка. Она не генерирует никакого кода и не обрабатывает список... каждая переменная должна быть в отдельном утверждении VAR.

ОК, теперь у нас может быть любое число объявлений данных, каждое начинается с "v" вместо VAR, перед блоком BEGIN. Попробуйте несколько вариантов и посмотрите, что происходит.

<< | >>
Источник: Креншоу Джек. Давайте создадим компилятор!. 1999

Еще по теме Объявления:

  1. 3. Объявление гражданина умершим
  2. 9. Безвестное отсутствие. Объявление гражданина умершим
  3. Статья 1250. Объявление нотариусом секретного завещания
  4. Статья 1150. Право на объявление конкурса
  5. Статья 47. Правовые последствия объявления физического лица умершим
  6. Параграф 1. Публичное обещание вознаграждения без объявления конкурса
  7. 4. Последствия явки гражданина, объявленного умершим
  8. § 5. Признание гражданина безвестное отсутствующим и объявление умершим
  9. Объявление о «Полярной звезде»
  10. Статья 46. Объявление физического лица умершим
  11. § 7. Правоотношения из объявления публичного конкурса (п. 2543-2552)
  12. § 5. Признание гражданина безвестно отсутствующим и объявление умершим