"Джек Креншоу. Давайте создадим компилятор! " - читать интересную книгу автора

Скопируйте код, представленный выше, в TP и откомпилируйте.
Удостоверьтесь, что программа откомпилировалась и запустилась корректно.
Затем переходим к первому уроку, синтаксическому анализу выражений.

Синтаксический анализ выражений


НАЧАЛО

Если вы прочитали введение, то вы уже в курсе дела. Вы также
скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы
готовы.
Целью этой главы является обучение синтаксическому анализу и трансляции
математических выражений. В результате мы хотели бы видеть серию команд на
ассемблере, выполняющую необходимые действия. Выражение - правая сторона
уравнения, например:
x = 2*y + 3/(4*z)
В самом начале я буду двигаться очень маленькими шагами для того, чтобы
начинающие из вас совсем не заблудились. Вы также получите несколько хороших
уроков, которые хорошо послужат нам позднее. Для более опытных читателей:
потерпите. Скоро мы двинемся вперед.

ОДИНОЧНЫЕ ЦИФРЫ

В соответствии с общей темой этой серии (KISS-принцип, помнишь?),
начнем с самого простого случая, который можно себе представить. Это
выражение, состоящее из одной цифры.
Перед тем как начать, удостоверьтесь, что у вас есть базовая копия
Cradle. Мы будем использовать ее для других экспериментов. Затем добавьте
следующие строки:

{-}
{ Parse and Translate a Math Expression }
procedure Expression;
begin
EmitLn('MOVE #' + GetNum + ',D0')
end;
{-}
И добавьте строку "Expression;" в основную программу,
которая должна выглядеть так:
{-}
begin
Init;
Expression;
end.
{-}

Теперь запустите программу. Попробуйте ввести любую одиночную цифру. Вы
получите результат в виде одной строчки на ассемблере. Затем попробуйте
ввести любой другой символ и вы увидите, что синтаксический анализатор