Files
LFS_Book/chapter06/flex.xml
2018-06-07 18:28:01 +03:00

141 lines
6.1 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-flex" role="wrap">
<?dbhtml filename="flex.html"?>
<sect1info condition="script">
<productname>flex</productname>
<productnumber>&flex-version;</productnumber>
<address>&flex-url;</address>
</sect1info>
<title>Flex-&flex-version;</title>
<indexterm zone="ch-system-flex">
<primary sortas="a-Flex">Flex</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>Flex (Fast Lexical Analyzer) — генератор лексических анализаторов. Это инструмент для лексического анализа, который может использоваться для выделения из исходного текста определенных строк заранее заданным способом.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&flex-ch6-sbu;</seg>
<seg>&flex-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Установка пакета Flex</title>
<para>Сначала, необходимо исправить проблему, обнаруженную в glibc-2.26:</para>
<screen><userinput remap="pre">sed -i "/math.h/a #include &lt;malloc.h&gt;" src/flexdef.h</userinput></screen>
<para>В процессе процедуры сборки предполагается наличие программы <application>help2man</application> -
программа для создания справочной страницы из исполняемого файла --help.
Её нет, поэтому мы используем переменную среды, чтобы пропустить этот процесс:
Выполните подготовку пакета к компиляции:</para>
<screen><userinput remap="configure">HELP2MAN=/tools/bin/true \
./configure --prefix=/usr --docdir=/usr/share/doc/flex-&flex-version;</userinput></screen>
<para>Скомпилируйте пакет:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Для выполнения тестов (около 0.5 SBU), выполните следующую команду:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Установите пакет:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Некоторые программы ничего пока не знают о <command>flex</command>, и будут пытаться запустить предшественника <command>lex</command>. Чтобы обуспечить возможность использования flex, создадим символическую ссылку с названием <command>lex</command> которая запустить требуемую программу <filename>flex</filename> в режиме эмуляции <command>lex</command>:</para>
<screen><userinput remap="install">ln -sv flex /usr/bin/lex</userinput></screen>
</sect2>
<sect2 id="contents-flex" role="content">
<title>Содержимое пакета Flex</title>
<segmentedlist>
<segtitle>Установленные программы</segtitle>
<segtitle>Установленные библиотеки</segtitle>
<segtitle>Каталог установки</segtitle>
<seglistitem>
<seg>flex, flex++ (link to flex), and lex (link to flex)</seg>
<seg>libfl.so</seg>
<seg>/usr/share/doc/flex-&flex-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Краткое описание</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="flex">
<term><command>flex</command></term>
<listitem>
<para>Инструмент для генерации программ, распознающих шаблоны в тексте;
           она позволяет универсально определять правила для поиска паттернов,
           исключая необходимость разработки специализированной программы</para>
<indexterm zone="ch-system-flex flex">
<primary sortas="b-flex">flex</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="flexpp">
<term><command>flex++</command></term>
<listitem>
<para>Расширение для flex, используемая для генерации кода Си++ и классов. Является символической ссылкой на <command>flex</command></para>
<indexterm zone="ch-system-flex flexpp">
<primary sortas="b-flex++">flex++</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="lex">
<term><command>lex</command></term>
<listitem>
<para>Символическая ссылка, которая запускает <command>flex</command> в режиме эмуляции
<command>lex</command></para>
<indexterm zone="ch-system-flex lex">
<primary sortas="b-lex">lex</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libfl">
<term><filename class="libraryfile">libfl</filename></term>
<listitem>
<para>Библиотека <filename class="libraryfile">flex</filename></para>
<indexterm zone="ch-system-flex libfl">
<primary sortas="c-libfl">libfl</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>