~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 359CDEF2D55684C80936117FE66A6755__1707584700 ✰
Заголовок документа оригинал.:
✰ Lex (software) - Wikipedia ✰
Заголовок документа перевод.:
✰ Лекс (программное обеспечение) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Lex_programming_tool ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/35/55/359cdef2d55684c80936117fe66a6755.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/35/55/359cdef2d55684c80936117fe66a6755__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 02:41:11 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 10 February 2024, at 20:05 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Лекс (программное обеспечение) — Википедия Jump to content

Лекс (программное обеспечение)

Из Википедии, бесплатной энциклопедии
Лекс
Оригинальный автор(ы) Майк Леск , Эрик Шмидт
Начальная версия 1975 год ; 49 лет назад ( 1975 )
Репозиторий
Написано в С
Операционная система Unix , Unix-подобные , Plan 9
Платформа Кросс-платформенный
Тип Команда
Лицензия План 9: МОЯ лицензия

Lex компьютерная программа , генерирующая лексические анализаторы («сканеры» или «лексеры»). [1] [2] Он обычно используется с yacc генератором синтаксического анализатора и является стандартным генератором лексического анализатора во многих Unix и Unix-подобных системах. Эквивалентный инструмент указан как часть стандарта POSIX . [3]

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

Помимо C, некоторые старые версии Lex могли генерировать лексер в Ratfor . [4]

История [ править ]

«Лекс» изначально был написан Майком Леском и Эриком Шмидтом. [5] и описан в 1975 г. [6] [7] В последующие годы Lex стал стандартным генератором лексического анализатора во многих Unix и Unix-подобных системах. В 1983 году Lex был одним из нескольких инструментов UNIX, доступных для UNOS операционной системы Bell Laboratories . компании Charles River Data Systems по лицензии [8] Хотя изначально Lex распространялся как проприетарное программное обеспечение, некоторые версии теперь имеют открытый исходный код . Версии Lex с открытым исходным кодом, основанные на оригинальном проприетарном коде, теперь распространяются вместе с операционными системами с открытым исходным кодом, такими как OpenSolaris и Plan 9 от Bell Labs . Одна популярная версия Lex с открытым исходным кодом, называемая flex или «быстрый лексический анализатор», не является производной от проприетарного кода.

Структура файла Lex [ править ]

Структура файла Lex намеренно аналогична структуре файла yacc: файлы разделены на три раздела, разделенные строками, содержащими только два знака процента, следующим образом:

  • Раздел определений , определяет макросы и импортирует файлы заголовков написанные C. на Здесь также можно написать любой код на языке C, который будет дословно скопирован в сгенерированный исходный файл.
  • Раздел правил связывает регулярных выражений шаблоны с операторами C. Когда лексер видит во входных данных текст, соответствующий заданному шаблону, он выполняет соответствующий код C.
  • Раздел кода C содержит инструкции и функции C , которые дословно копируются в сгенерированный исходный файл. Эти операторы предположительно содержат код, вызываемый правилами в разделе правил. В больших программах удобнее размещать этот код в отдельном файле, подключаемом во время компиляции .

Пример файла Lex [ править ]

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

/*** Раздел определения ***/ 

 %  { 
 /* Код C, который необходимо скопировать дословно */ 
 #include   <stdio.h> 
 %  } 

 %% 
     /*** Раздел правил ***/ 

     /* [0-9] + соответствует строке, состоящей из одной или нескольких цифр */ 
 [  0-9  ]  +    { 
             /* yytext — это строка, содержащая совпавший текст.   */ 
             printf  (  "Видел целое число: %s  \n  "  ,   yytext  ); 
          } 

 .   |   \  n      {     /* Игнорировать все остальные символы.   */     } 

 %% 
 /*** Раздел кода C ***/ 

 int   main  (  void  ) 
 { 
     /* Вызовите лексер, затем выйдите.   */ 
     yylex  (); 
      вернуть   0  ; 
  } 

Если этот вход передан flex, он будет преобразован в файл C, lex.yy.c. Его можно скомпилировать в исполняемый файл, который сопоставляет и выводит строки целых чисел. Например, учитывая ввод:

abc123z.!&*2gj6
 

программа напечатает:

Увидел целое число: 123
 Увидел целое число: 2
 Увидел целое число: 6
 

Использование Lex с другими инструментами программирования [ править ]

Использование Lex с генераторами парсеров [ править ]

Lex, как и другие лексические анализаторы, ограничивает правила теми, которые можно описать регулярными выражениями . Благодаря этому Lex может быть реализован с помощью конечных автоматов, как показывает Хомского иерархия языков . Для распознавания более сложных языков Lex часто используется с генераторами парсеров, такими как Yacc или Bison . Генераторы анализаторов используют формальную грамматику для анализа входного потока.

Обычно предпочтительнее, чтобы синтаксический анализатор, сгенерированный, например, Yacc, принимал поток токенов («поток токенов») в качестве входных данных, а не обрабатывал поток символов («поток символов») напрямую. . Lex часто используется для создания такого потока токенов.

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

Лекс и сделай [ править ]

make — это утилита, которую можно использовать для поддержки программ, использующих Lex. Make предполагает, что файл с расширением .lэто исходный файл Lex. Внутренний макрос make LFLAGS может использоваться для указания опций Lex, которые будут автоматически вызываться командой make. [9]

См. также [ править ]

Ссылки [ править ]

  1. ^ Левин, Джон Р .; Мейсон, Тони; Браун, Дуг (1992). lex & yacc (2-е изд.). О'Рейли . стр. 1–2 . ISBN  1-56592-000-7 .
  2. ^ Левин, Джон (август 2009 г.). флекс и бизон . О'Рейли Медиа. п. 304. ИСБН  978-0-596-15597-1 .
  3. ^ Базовые спецификации открытой группы, выпуск 7, издание 2018 г. § Shell & Utilities § Utilities § lex
  4. ^ Джон Р. Левин; Джон Мейсон; Дуг Браун (1992). Лекс и Якк . О'Рейли. ISBN  9781565920002 .
  5. ^ Леск, МЭ; Шмидт, Э. «Lex – генератор лексического анализатора» . Архивировано из оригинала 28 июля 2012 г. Проверено 16 августа 2010 г.
  6. ^ Леск, МЭ; Шмидт, Э. (21 июля 1975 г.). «Lex — генератор лексического анализатора» (PDF) . СИСТЕМА РАЗДЕЛЕНИЯ ВРЕМЕНИ UNIX: РУКОВОДСТВО ПРОГРАММИСТА UNIX, седьмое издание, том 2B . bell-labs.com . Проверено 20 декабря 2011 г.
  7. ^ Леск, Мэн (октябрь 1975 г.). «Lex - Генератор лексического анализатора». Комп. наук. Тех. Реп. № 39 . Мюррей Хилл, Нью-Джерси: Bell Laboratories.
  8. ^ Путеводитель по Вселенной для инсайдеров (PDF) . Charles River Data Systems, Inc., 1983. с. 13.
  9. ^ "делать" . Базовые характеристики открытой группы (6). IEEE и Открытая группа. 2004. IEEE Std 1003.1, издание 2004 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 359CDEF2D55684C80936117FE66A6755__1707584700
URL1:https://en.wikipedia.org/wiki/Lex_programming_tool
Заголовок, (Title) документа по адресу, URL1:
Lex (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)