|
Давайте создадим компилятор!Для краткости я включил здесь только выполнимый код; остальное тоже самое. Не забудьте, тем не менее, добавить имя Scanner1 в раздел «uses»: Write(GetName); Match('='); Write(GetNumber); Match('+'); WriteLn(GetName); Этот код распознает все предложения вида: x=0+y где x и y могут быть любыми односимвольными именами переменных и 0 любой цифрой. Код должен отбросить все другие предложения и выдать осмысленное сообщение об ошибке. Если это произошло, тогда вы в хорошей форме и мы можем продолжать. МОДУЛЬ SCANNER Следующая, и намного более важная, версия лексического анализатора, та которая обрабатывает многосимвольные токены, которые должны иметь все настоящие языки.PТолько две функции, GetName и GetNumber отличаются в этих двух модулях, но только чтобы убедиться, что здесь нет никаких ошибок, я воспроизвел здесь весь модуль. Это модуль Scanner: {} unit Scanner; {} interface uses Input, Errors; function IsAlpha(c: char): boolean; function IsDigit(c: char): boolean; function IsAlNum(c: char): boolean; function IsAddop(c: ...» | Код для вставки книги в блог HTML
phpBB
текст
|
|