Лексический анализатор

[Оглавление] [Текст модуля] [Предыдущая] [Следующая]

Лексический анализатор организован как буферизированный поток лексем - элементов типа TToken (см. файл CConstan.pas).

Как и поток входных символов, поток лексем имеет два наиболее важных метода для чтения и отмены чтения лексемы - Read и PutBack. Кроме того, есть также целый набор специализированных методов для чтения лексем определенных типов: идентификаторов, зарезервированных слов, числовых и стоковых констант. Все эти методы имеют имена вида "Read???", где "???" - название соответствующего типа лексемы.

У потока лексем есть набор специальных методов для пропуска пробелов и комментариев. Этого набора хватает, чтобы обеспечить поддержку коментариев практически любых существующих языков: Си, Си++, Паскаль, Ада, Ассемблер и др. Комментарии могут быть двух видов: блочные и ленийные. Блочный комментарий начинается и заканчивается определенными последовательностями длиной в один или два символа и может быть многострочным. Линейный комментарий начинается последовательностью из одного-двух символов и заканчивается переводом строки, т.е. всегда занимает одну строчку.

Практически все методы потока лексем работают сходным образом. Они читают по одному символу из входного потока и проверяют, подходит ли этот символ текущему фильтру (например, числа, буквы, разделители, пробелы и служебные символы). Пока это условие соблюдается, метод пытается построить из этих символов лексему. Если ему это удается, он формирует новую лексему и возвращает True, в противном случае он пересылает все выбранные символы назад во входной поток (методом PutBack) и возвращает False.



[Наверх] [Об авторе...] [Оглавление]

Copyright © Алексей Яковлев, АВМ-008, факультет АТС, РГУПС.
Моя домашняя страничка: http://www.yallie.narod.ru.