<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 2.0">
<title>See Also</title>
</head>

<body bgcolor="#FFFFFF">

<table border="0" width="100%">
    <tr>
        <td><font size="6"><strong>See Also</strong></font></td>
        <td align="right"><a href="limitations.html"><img
        src="../image/previous.gif" alt="Previous" border="0"
        width="40" height="40"></a><a href="index.html"><img
        src="../image/next.gif" alt="Next" border="0" width="40"
        height="40"></a></td>
    </tr>
</table>

<hr size="1">

<h2>Bibliographical References</h2>

<table border="0" cellpadding="5">
    <tr>
        <td valign="top"><img src="../image/book/empty.gif"
        align="top" border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://minix1.bio.umass.edu/pub/minix.2.0/2.0.4/wwwman/man1/flexdoc.1.html"><em><strong>flexdoc.1</strong></em></a>,
        by Vern Paxson. 1995.<br>
        This is the definitive reference on <em>flex</em>.
        Written by the author of <em>flex</em>, it is part of the
        <em>flex</em> distribution. The manual includes both
        tutorial and reference sections and is of great help for
        novice and experienced programmers. The documentation of <em>gelex</em>
        is based on this manual.</td>
    </tr>
    <tr>
        <td valign="top"><img src="../image/book/empty.gif"
        align="top" border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://www.combo.org/lex_yacc_page/lex.html"><em><strong>Lex
        - Lexical Analyzer Generator</strong></em></a>, by <a
        href="http://www.purl.net/NET/lesk">M. E. Lesk</a>, E.
        Schmidt. Bell Laboratories, 1975.<br>
        This paper was certainly the first reference manual
        describing <em>lex</em>, a tool which has been initially
        designed and implemented under Unix by the authors to
        simplify interfacing with <em>yacc</em>. It's interesting
        to see that the specification of <em>lex</em> didn't
        change that much over the years.</td>
    </tr>
    <tr>
        <td valign="top"><img src="../image/book/flex.gif"
        align="top" border="1" width="80" height="100"></td>
        <td valign="top"><a href="http://gnu.bestwebcover.com/doc/book11.html"><em><strong>Flex, The Lexical Scanner
        Generator</strong></em></a>, by G. T. Nicol. <a
        href="http://www.fsf.org/">Free Software Foundation</a>,
        1993. ISBN 1-882114-21-3.<br>
        The <em>flex</em> manual (edition 1.03) provided by the
        Free Software Foundation covers <em>flex</em> 2.3.7.
        Although out of date, this is a good reference manual for
        programmers familiar with the common problems in lexical
        analysis and compiler design.</td>
    </tr>
    <tr>
        <td valign="top"><img src="../image/book/lex_yacc.gif"
        align="top" border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://www.ora.com/catalog/lex/"><em><strong>Lex
        &amp; Yacc</strong></em></a>, second edition, by J. R.
        Levin, T. Mason, D. Brown. <a href="http://www.ora.com/">O'Reilly
        &amp; Associates, Inc.</a>, 1992. ISBN 1-56592-000-7.<br>
        This book is both a reference manual for <em>lex</em> and
        <em>yacc</em> with a thorough description of the various
        flavors of these tools, and a tutorial with well-written
        examples explained in details.</td>
    </tr>
    <tr>
        <td valign="top"><img src="../image/book/compilers.gif"
        align="top" border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://www.amazon.com/exec/obidos/ASIN/0201100886/104-0124030-2507123"><em><strong>Compilers:
        Principles, Techniques, and Tools</strong></em></a>, by
        A. V. Aho, R. Sethi, J. D. Ullman. <a
        href="http://www.aw.com/cseng">Addison-Wesley</a>, 1986.
        ISBN 0-201-10088-6.<br>
        The classic compiler text, also known as the <em>Dragon
        Book</em> because of its cover. It includes detailed
        discussions of the theory behind lexical analysis along
        with sketches of possible implementations (see chapter 3,
        page 83).</td>
    </tr>
    <tr>
        <td valign="top"><img
        src="../image/book/compiler_design.gif" align="top"
        border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://www.amazon.com/exec/obidos/ASIN/0201422905/104-0124030-2507123l/104-9545289-7922301"><em><strong>Compiler
        Design</strong></em></a>, by R. Wilhelm, D. Maurer. <a
        href="http://www.aw.com/cseng">Addison-Wesley</a>, 1995.
        ISBN 0-201-42290-5.<br>
        This book provides a comprehensive, modern approach to
        the design and construction of compilers, with a chapter
        devoted to lexical analysis (see chapter 7, page 235).</td>
    </tr>
    <tr>
        <td valign="top"><img src="../image/book/regex.gif"
        border="1" width="80" height="100"></td>
        <td valign="top"><a
        href="http://www.ora.com/catalog/regex/"><em><strong>Mastering
        Regular Expressions</strong></em></a>, by J. E.F. Friedl.
        <a href="http://www.ora.com/">O'Reilly &amp; Associates,
        Inc.</a>, 1997. ISBN 1-56592-257-3.<br>
        Everything you wanted to know about regular expressions
        can be found in this excellent book. There can be certain
        subtle but valuable ways to think when using regular
        expressions. In the book the author leads you through the
        steps of knowing exactly how to craft a regular
        expression to get the job done.</td>
    </tr>
</table>

<h2>Related Resources</h2>

<p>The <a href="http://www.eiffelzone.com">Eiffel Zone</a> <a
href="http://www.eiffelzone.com/esd/index.html">Software Directory</a> contains
many linls to Eiffel libraries sorted by category. Also of
interest is the <a
href="http://www.cetus-links.org/oo_eiffel.html">Cetus Links
Eiffel</a> page and its <a
href="http://www.cetus-links.org/oo_eiffel_libraries.html">library
section</a> which provides links to numerous open-source and
commercial Eiffel libraries.</p>

<p><a href="http://www.object-tools.com">Object Tools</a>
developed Eiffel wrappers and support for Eiffel/S that allow <em>Flex</em>
and <em>Bison</em> to be used for the generation of lexical
analyzers and parsers using Eiffel under MS-DOS. This package is
distributed under the GNU <a
href="http://www.fsf.org/licensing/licenses/gpl.html">GPL license</a> and
includes the DOS versions of <em>Flex</em> and <em>Bison</em>.
This package can be <a
href="http://www.eiffelzone.com/esd/flex-ot/index.html">downloaded</a>
from the <a href="http://www.eiffelzone.com">Eiffel Zone</a> <a
href="http://www.eiffelzone.com/esd/index.html">Software Directory</a> page.</p>

<p>Pirmin Kalberer ported the above package to ISE Eiffel 3. 
The <em>flex</em> distribution can be downloaded from Pirmin's <a
href="http://www.eiffelzone.com/esd/flex-pk/index.html">Flex for
Eiffel</a> page.</p>

<p><a href="http://www.eiffel.com">ISE</a>'s <a
href="http://www.eiffel.com/products/lex.html"><em>EiffelLex</em></a>
library provides a set of object-oriented mechanisms for lexical
analysis, based on several kinds of finite automata,
deterministic and non-deterministic. However the scanner
specification is done in Eiffel, which is quite cumbersome, and
the automata are built at run-time making the execution rather
slow.</p>

<p><em>Epg: an Eiffel Parser Generator</em> is a wrapper and
supporting classes to use standard Unix tools to generate Eiffel
parsers. <em>Epg</em> is a freeware developed by Christoph
Zenger. This package requires <em>lex</em>/<em>yacc</em>/<em>sed</em>
etc. and works with Eiffel/S 1.3. More information about <a
href="http://www.eiffelzone.com/esd/epg/index.html"><em>epg</em></a>,
including downloading instructions, can be found at the <a
href="http://www.eiffelzone.com">Eiffel Zone</a> <a
href="http://www.eiffelzone.com/esd/index.html">Software Directory</a> page.</p>

<p>Bruce Wielinga wrote an Eiffel wraper around the <a
href="ftp://prep.ai.mit.edu/pub/gnu">GNU rx library</a>. This
allows one to do regular expression matching in <a
href="http://SmartEiffel.loria.fr/">SmartEiffel</a>. This package
can be <a href="http://www.eiffelzone.com/esd/rx/index.html">downloaded</a>
from the <a href="http://www.eiffelzone.com">Eiffel Zone</a> <a
href="http://www.eiffelzone.com/esd/index.html">Software Directory</a>.</p>

<h2>Acknowledgements</h2>

<p><em>Gelex</em> has been written in Eiffel after
reverse-engineering the <em>flex</em> utility (version 2.5.2)
contributed to Berkeley by Vern Paxson. The C source code of the <em>flex</em>
utility can be downloaded from <a
href="ftp://prep.ai.mit.edu/pub/gnu"><tt>ftp://prep.ai.mit.edu/pub/gnu</tt></a>.</p>

<hr size="1">

<table border="0" width="100%">
    <tr>
        <td><address>
            <font size="2"><b>Copyright © 1999-2005</b></font><font
            size="1"><b>, </b></font><font size="2"><strong>Eric
            Bezault</strong></font><strong> </strong><font
            size="2"><br>
            <strong>mailto:</strong></font><a
            href="mailto:ericb@gobosoft.com"><font size="2">ericb@gobosoft.com</font></a><font
            size="2"><br>
            <strong>http:</strong></font><a
            href="http://www.gobosoft.com"><font size="2">//www.gobosoft.com</font></a><font
            size="2"><br>
            <strong>Last Updated:</strong> 23 February 2005</font><br>
            <!--webbot bot="PurpleText"
            preview="
$Date$ 
$Revision$"
            --> 
        </address>
        </td>
        <td align="right" valign="top"><a
        href="http://www.gobosoft.com"><img
        src="../image/home.gif" alt="Home" border="0" width="40"
        height="40"></a><a href="index.html"><img
        src="../image/toc.gif" alt="Toc" border="0" width="40"
        height="40"></a><a href="limitations.html"><img
        src="../image/previous.gif" alt="Previous" border="0"
        width="40" height="40"></a><a href="index.html"><img
        src="../image/next.gif" alt="Next" border="0" width="40"
        height="40"></a></td>
    </tr>
</table>
</body>
</html>
