Википедия

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

В информатике лексический анализ («токенизация», от англ. tokenizing) — процесс аналитического входной последовательности символов на распознанные группы — лексемы — с целью получения на выходе идентифицированных последовательностей, называемых «токенами» (подобно группировке букв в словах).

Смысл

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

Как правило, лексический анализ производится с точки зрения определённого формального языка или набора языков. Язык, а точнее, его грамматика, задаёт определённый набор лексем, которые могут встретиться на входе процесса.

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

Распознавание лексем в контексте грамматики обычно производится путём их идентификации (или классификации) согласно идентификаторам (или классам) токенов, определяемых грамматикой языка. При этом любая последовательность символов входного потока (лексема), которая согласно грамматике не может быть идентифицирована как токен языка, обычно рассматривается как специальный токен-ошибка.

Каждый токен можно представить в виде структуры, содержащей идентификатор токена (или идентификатор класса токена) и, если нужно, последовательность символов лексемы, выделенной из входного потока (строку, число и т. д.).

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

Пример

Для примера, исходный код следующей строки программы

 net_worth_future = (assets  liabilities); 

может быть преобразован в следующий поток токенов:

ИМЯ "net_worth_future" ПРИСВАИВАНИЕ ОТКРЫВАЮЩАЯ_СКОБКА ИМЯ "assets" МИНУС ИМЯ "liabilities" ЗАКРЫВАЮЩАЯ_СКОБКА ТОЧКА_С_ЗАПЯТОЙ 

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

image
Схема лексического анализатора

Лексический анализатор (англ. lexical analyzer, lexer; или «токенизатор» от tokenizer) — это программа или часть программы, выполняющая лексический анализ. Лексический анализатор обычно работает в две стадии: сканирование и оценка.

На первой стадии, сканировании, лексический анализатор обычно реализуется в виде конечного автомата, определяемого регулярными выражениями. В нём кодируется информация о возможных последовательностях символов, которые могут встречаться в токенах. Например, токен «целое число» может содержать любую последовательность десятичных цифр. Во многих случаях первый непробельный символ может использоваться для определения типа следующего токена, после чего входные символы обрабатываются один за другим, пока не встретится символ, не входящий во множество допустимых символов для данного токена. В некоторых языках правила разбора лексем несколько более сложные и требуют возвратов назад по читаемой последовательности.

Полученный таким образом токен содержит необработанный исходный текст (строку). Для того, чтобы получить токен со значением, соответствующим типу (напр. целое или дробное число), выполняется оценка этой строки — проход по символам и вычисление значения.

Токен с типом и соответственно подготовленным значением передаётся на вход синтаксического анализатора.

Генераторы лексических анализаторов

  • lex — стандартный генератор в Unix
  • Flex — альтернативный вариант классической утилиты lex
  • re2c — генерирует оптимизированные нетабличные лексеры, ориентирован на работу с Си, C++, Go, Rust
  •  — генератор на Java
  • ANTLR
  • lexertl

См. также

Литература

  • Альфред В. Ахо, Моника С. Лам, , Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий = Compilers: Principles, Techniques, and Tools. — 2-е изд. — М.: , 2008. — ISBN 978-5-8459-1349-4.
  • . Основные концепции компиляторов = The Essence of Compilers. — М.: , 2002. — С. 256. — ISBN 5-8459-0360-2.

Ссылки

  • Козиев И. Лексер, из документации к системе парсинга естественных языков «SDK грамматического словаря»

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Лексический анализ, Что такое Лексический анализ? Что означает Лексический анализ?

Zapros Leksema informatika perenapravlyaetsya syuda sm takzhe drugie znacheniya V informatike leksicheskij analiz tokenizaciya ot angl tokenizing process analiticheskogo vhodnoj posledovatelnosti simvolov na raspoznannye gruppy leksemy s celyu polucheniya na vyhode identificirovannyh posledovatelnostej nazyvaemyh tokenami podobno gruppirovke bukv v slovah SmyslV prostyh sluchayah ponyatiya leksema i token identichny no bolee slozhnye tokenizatory dopolnitelno klassificiruyut leksemy po razlichnym tipam identifikator operator chast rechi i t p Leksicheskij analiz ispolzuetsya v kompilyatorah i interpretatorah ishodnogo koda yazykov programmirovaniya i v razlichnyh parserah slov estestvennyh yazykov Kak pravilo leksicheskij analiz proizvoditsya s tochki zreniya opredelyonnogo formalnogo yazyka ili nabora yazykov Yazyk a tochnee ego grammatika zadayot opredelyonnyj nabor leksem kotorye mogut vstretitsya na vhode processa Tradicionno prinyato organizovyvat process leksicheskogo analiza rassmatrivaya vhodnuyu posledovatelnost simvolov kak potok simvolov Pri takoj organizacii process samostoyatelno upravlyaet vyborkoj otdelnyh simvolov iz vhodnogo potoka Raspoznavanie leksem v kontekste grammatiki obychno proizvoditsya putyom ih identifikacii ili klassifikacii soglasno identifikatoram ili klassam tokenov opredelyaemyh grammatikoj yazyka Pri etom lyubaya posledovatelnost simvolov vhodnogo potoka leksema kotoraya soglasno grammatike ne mozhet byt identificirovana kak token yazyka obychno rassmatrivaetsya kak specialnyj token oshibka Kazhdyj token mozhno predstavit v vide struktury soderzhashej identifikator tokena ili identifikator klassa tokena i esli nuzhno posledovatelnost simvolov leksemy vydelennoj iz vhodnogo potoka stroku chislo i t d Cel takoj konvertacii obychno sostoit v tom chtoby podgotovit vhodnuyu posledovatelnost dlya drugoj programmy naprimer dlya grammaticheskogo analizatora i izbavit ego ot opredeleniya leksicheskih podrobnostej v kontekstno svobodnoj grammatike chto privelo by k uslozhneniyu grammatiki PrimerDlya primera ishodnyj kod sleduyushej stroki programmy net worth future assets liabilities mozhet byt preobrazovan v sleduyushij potok tokenov IMYa net worth future PRISVAIVANIE OTKRYVAYuShAYa SKOBKA IMYa assets MINUS IMYa liabilities ZAKRYVAYuShAYa SKOBKA TOChKA S ZAPYaTOJLeksicheskij analizatorShema leksicheskogo analizatora Leksicheskij analizator angl lexical analyzer lexer ili tokenizator ot tokenizer eto programma ili chast programmy vypolnyayushaya leksicheskij analiz Leksicheskij analizator obychno rabotaet v dve stadii skanirovanie i ocenka Na pervoj stadii skanirovanii leksicheskij analizator obychno realizuetsya v vide konechnogo avtomata opredelyaemogo regulyarnymi vyrazheniyami V nyom kodiruetsya informaciya o vozmozhnyh posledovatelnostyah simvolov kotorye mogut vstrechatsya v tokenah Naprimer token celoe chislo mozhet soderzhat lyubuyu posledovatelnost desyatichnyh cifr Vo mnogih sluchayah pervyj neprobelnyj simvol mozhet ispolzovatsya dlya opredeleniya tipa sleduyushego tokena posle chego vhodnye simvoly obrabatyvayutsya odin za drugim poka ne vstretitsya simvol ne vhodyashij vo mnozhestvo dopustimyh simvolov dlya dannogo tokena V nekotoryh yazykah pravila razbora leksem neskolko bolee slozhnye i trebuyut vozvratov nazad po chitaemoj posledovatelnosti Poluchennyj takim obrazom token soderzhit neobrabotannyj ishodnyj tekst stroku Dlya togo chtoby poluchit token so znacheniem sootvetstvuyushim tipu napr celoe ili drobnoe chislo vypolnyaetsya ocenka etoj stroki prohod po simvolam i vychislenie znacheniya Token s tipom i sootvetstvenno podgotovlennym znacheniem peredayotsya na vhod sintaksicheskogo analizatora Generatory leksicheskih analizatorovlex standartnyj generator v Unix Flex alternativnyj variant klassicheskoj utility lex re2c generiruet optimizirovannye netablichnye leksery orientirovan na rabotu s Si C Go Rust generator na Java ANTLR lexertlSm takzheSintaksicheskij analiz Kompilyator TranslyatorV Vikislovare est statya leksema LiteraturaAlfred V Aho Monika S Lam Dzheffri D Ulman Kompilyatory principy tehnologii i instrumentarij Compilers Principles Techniques and Tools 2 e izd M 2008 ISBN 978 5 8459 1349 4 Osnovnye koncepcii kompilyatorov The Essence of Compilers M 2002 S 256 ISBN 5 8459 0360 2 SsylkiKoziev I Lekser iz dokumentacii k sisteme parsinga estestvennyh yazykov SDK grammaticheskogo slovarya

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто