Построение лексического анализатора по регулярному выражению
По имеющемуся регулярному выражению легко написать лексический анализатор вручную. Ниже приведен пример лексического анализа идентификатора, взятый из демонстрационного компилятора C-бемоль.
if (Char.IsLetter (src [pos]) || src [pos] == '_') { int fst = pos; do ++ pos; while (pos != src.Length && (Char.IsLetterOrDigit (src [pos]) || src [pos]=='_')); string name = src.Substring (fst, pos - fst); object tag = keys_table [name]; if (tag != null) return new Token.Single (new Coor (fname, fst, pos), (Token.Tag) tag); return new Token.Ident (new Coor (fname, fst, pos), name); }
В этом фрагменте производятся следующие действия:
- анализ первого символа (буква или символ подчеркивания?)
- продвижение вперед по исходной строке, покуда мы встречаем буквы, цифры или символ подчеркивания
- проверка, не является ли разобранный идентификатор ключевым словом?
- если это действительно ключевое слово, то выдается соответствующий лексический класс (ключевое слово, Single), вместе с привязкой к исходному тексту и точным значением ключевого слова
- если это не ключевое слово, то это идентификатор, который и выдается вместе с привязкой к исходному тексту и его именем.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий