Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лексический анализ




Регулярные выражения в UNIX

Применение регулярных выражений

 

 

Регулярные выражения широко применяются в ОС UNIX. Рассмотрим запись выражений в этой системе и затем – два важных класса приложений, основанных на регулярных выражениях: лексические анализаторы и поиск в тексте.

 

 

Позволяют создавать классы символов для представления множеств символов в наиболее кратком виде. Существуют следующие правила для классов символов.

 

 

Дополнительные операторы, облегчающие построение и читаемость выражений:

 

 

 

Процесс компиляции состоит из следующих этапов:

1. Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.

2. Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево разбора.

3. Семантический анализ. Дерево разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным деревом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.

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

5. Генерация кода. Из промежуточного представления порождается код на целевом языке.

Лексический анализатор – компонент компилятора, который сканирует исходную программу и распознает все лексемы, т. е. подцепочки последовательных символов, логически составляющие единое целое.

 

Ниже приведен пример фрагмента кода лексического анализатора. Левая часть кода представляет собой регулярные выражения для искомых лексем (if, переменная, число, унарная или бинарная операция), а правая - выполняемый код анализатора в случае их нахождения.

 

%%

if printf ("IF statement\n");

[a-z]+ printf ("tag, value %s\n", yytext);

{D}+ printf ("decimal number %s\n", yytext);

"++" printf ("unary op\n");

"+" printf ("binary op\n");

 

 




Поделиться с друзьями:


Дата добавления: 2015-05-26; Просмотров: 503; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.