aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/flex.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter06/flex.xml')
-rw-r--r--chapter06/flex.xml78
1 files changed, 70 insertions, 8 deletions
diff --git a/chapter06/flex.xml b/chapter06/flex.xml
index 9772cfcf4..90282002b 100644
--- a/chapter06/flex.xml
+++ b/chapter06/flex.xml
@@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
-<sect1 id="ch-system-flex" xreflabel="Flex" role="wrap">
+<sect1 id="ch-system-flex" role="wrap">
<title>Flex-&flex-version;</title>
<?dbhtml filename="flex.html"?>
<indexterm zone="ch-system-flex"><primary sortas="a-Flex">Flex</primary></indexterm>
<sect2 role="package"><title/>
+<para>The Flex package contains a utility for generating programs that
+recognize patterns in text.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@@ -17,20 +19,28 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.4 MB</seg></seglistitem>
</segmentedlist>
+<segmentedlist>
+<segtitle>Flex installation depends on</segtitle>
+<seglistitem><seg>Bash, Binutils, Bison, Coreutils, Diffutils,
+GCC, Gettext, Glibc, Grep, M4, Make, and Sed</seg></seglistitem>
+</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Flex</title>
-<para>Apply a patch:</para>
+<para>Flex contains several known bugs. Fix these with the following patch:</para>
<screen><userinput>patch -Np1 -i ../flex-&flex-version;-debian_fixes-2.patch</userinput></screen>
-<para>Touch the man-page:</para>
+<para>The GNU autotools detects that the Flex source code has been
+modified by the previous patch and tries to update the manual page
+accordingly. This does not work correctly on many systems, and the
+default page is fine, so make sure it does not get regenerated:</para>
<screen><userinput>touch doc/flex.1</userinput></screen>
-<para>Now prepare Flex for compilation:</para>
+<para>Prepare Flex for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
@@ -41,15 +51,21 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
-<para>Now install the package:</para>
+<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-<para>Create a symlink:</para>
+<para>There are some packages that expect to find the
+<filename class="libraryfile">lex</filename> library in <filename
+class="directory">/usr/lib</filename>. Create a symlink to account for
+this:</para>
<screen><userinput>ln -s libfl.a /usr/lib/libl.a</userinput></screen>
-<para>Create a lex script:</para>
+<para>A few programs do not know about <command>flex</command> yet and
+try to run its predecessor, <command>lex</command>. To support those
+programs, create a wrapper script named <filename>lex</filename> that
+calls <filename>flex</filename> in <command>lex</command> emulation mode:</para>
<screen><userinput>cat &gt; /usr/bin/lex &lt;&lt; "EOF"
<literal>#!/bin/sh
@@ -66,8 +82,54 @@ chmod 755 /usr/bin/lex</userinput></screen>
<sect2 id="contents-flex" role="content"><title>Contents of Flex</title>
-<para>See testing</para>
+<segmentedlist>
+<segtitle>Installed programs</segtitle>
+<segtitle>Installed library</segtitle>
+<seglistitem><seg>flex, flex++ (link to flex), and lex</seg>
+<seg>libfl.a</seg></seglistitem>
+</segmentedlist>
+
+<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
+<?dbfo list-presentation="list"?>
+
+<varlistentry id="flex">
+<term><command>flex</command></term>
+<listitem>
+<para>A tool for generating programs that recognize patterns in text;
+it allows for the versatility to specify the rules for
+pattern-finding, eradicating the need to develop a specialized
+program</para>
+<indexterm zone="ch-system-flex flex"><primary sortas="b-flex">flex</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="flex-">
+<term><command>flex++</command></term>
+<listitem>
+<para>Invokes a version of <command>flex</command> that is used exclusively for C++ scanners</para>
+<indexterm zone="ch-system-flex flex-"><primary sortas="b-flex++">flex++</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="lex">
+<term><command>lex</command></term>
+<listitem>
+<para>Script that runs <command>flex</command> in <command>lex</command>
+emulation mode</para>
+<indexterm zone="ch-system-flex lex"><primary sortas="b-lex">lex</primary></indexterm>
+</listitem>
+</varlistentry>
+
+<varlistentry id="libfl.a">
+<term><filename class="libraryfile">libfl.a</filename></term>
+<listitem>
+<para>The <filename class="libraryfile">flex</filename> library</para>
+<indexterm zone="ch-system-flex libfl.a"><primary sortas="c-libfl.a">libfl.a</primary></indexterm>
+</listitem>
+</varlistentry>
+</variablelist>
</sect2>
</sect1>
+