Разработка компиляторов



Методы, которые следует разработать самостоятельно


В данный момент нас интересует сам метод рекурсивного спуска, а не способы организации ввода данных, поэтому в нашем примере мы опирались на следующие предположения:

  • Существует метод без параметров getChar, выдающий очередную литеру из входного потока
  • Метод returnChar возвращает неиспользованную литеру обратно во входной поток
  • Кроме того, мы не будем описывать методы isDigit и getValue. Первый из этих методов возвращает true только в том случае, когда ее параметр является цифрой. Второй метод извлекает из входного потока все цифры, которые непосредственно следуют за литерой, передаваемой ей в качестве параметра, и вычисляет соответствующее целочисленное значение.
  • Метод error используется для вывода сообщений об ошибках.

Эти методы необходимо реализовать самостоятельно. При реализации некоторых из этих методов на платформе .NET можно воспользоваться методами стандартных классов.

Заметим, что при реализации этого примера мы использовали метод рекурсивного спуска с возвратами (recursive descent with backtracking). Чуть позже мы увидим, почему нам не удалось ограничиться методом рекурсивного спуска без возвратов.




Содержание  Назад  Вперед