"Джек Креншоу. Давайте создадим компилятор! " - читать интересную книгу автора Скопируйте код, представленный выше, в 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. {-} Теперь запустите программу. Попробуйте ввести любую одиночную цифру. Вы получите результат в виде одной строчки на ассемблере. Затем попробуйте ввести любой другой символ и вы увидите, что синтаксический анализатор |
|
|