/usr/share/doc/frown-doc/html/Manual002.html is in frown-doc 0.6.1-14.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="hevea 2.06">
<link rel="stylesheet" type="text/css" href="Manual.css">
<title>Introduction</title>
</head>
<body >
<a href="Manual001.html"><img src="previous_motif.gif" alt="Previous"></a>
<a href="index.html"><img src="contents_motif.gif" alt="Up"></a>
<a href="Manual003.html"><img src="next_motif.gif" alt="Next"></a>
<hr>
<h1 id="sec2" class="chapter">Chapter 1 Introduction</h1>
<p>
<a id="sec:introduction"></a>
</p><p><span style="font-family:sans-serif">Frown</span> is an LALR(<span style="font-style:italic">k</span>) parser generator for Haskell 98 written in
Haskell 98.</p><p>The work on <span style="font-family:sans-serif">Frown</span> started as an experiment in generating genuinely
functional LR parsers. The first version was written within three
days—yes, Haskell is a wonderful language for rapid prototyping.
Since then <span style="font-family:sans-serif">Frown</span> has gone through several cycles of reorganization
and rewriting. It also grew considerably: dozens of features were
added, examples were conceived and tested, and this manual was
written. In the end, <span style="font-family:sans-serif">Frown</span> has become a useable tool. I hope you
will find it useful, too.</p>
<h2 id="sec3" class="section">1.1 Obtaining and installing <span style="font-family:sans-serif">Frown</span></h2>
<p>
<a id="sec:install"></a>
</p>
<h5 id="sec4" class="paragraph">Obtaining <span style="font-family:sans-serif">Frown</span></h5>
<p>The parser generator is available from
</p><blockquote class="quote">
<span style="font-family:monospace">http://www.informatik.uni-bonn.de/~ralf/frown</span>.
</blockquote><p>
The bundle includes the sources and the complete documentation (dvi,
ps, PDF, and HTML).</p>
<h5 id="sec5" class="paragraph">Requirements</h5>
<p>You should be able to build <span style="font-family:sans-serif">Frown</span> with every Haskell 98-compliant
compiler. You have to use a not too ancient compiler as there have
been some changes to the Haskell language in Sep. 2001 (GHC 5.02 and
later versions will do).</p><p>The Haskell interpreter Hugs 98 is needed for running the testsuite.</p><p>Various tools are required to generate the documentation from scratch:
<span style="font-family:monospace">lhs2TeX</span>, L<sup>A</sup>T<sub>E</sub>X, functional , H<span style="font-size:small"><sup>E</sup></span>V<span style="font-size:small"><sup>E</sup></span>A and H<span style="font-size:small"><sup>A</sup></span>C<span style="font-size:small"><sup>H</sup></span>A. Note, however, that
the bundle already includes the complete documentation.</p>
<h5 id="sec6" class="paragraph">Installation</h5>
<p>Unzip and untar the bundle. This creates a directory called <span style="font-family:monospace">Frown</span>.
Enter this directory.
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf> tar xzf frown.tar.gz</span></td></tr>
<tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf> cd Frown
</span></td></tr>
</table><p>
The documentation resides in the directory <span style="font-family:monospace">Manual</span>; example grammars
can be found in <span style="font-family:monospace">Examples</span> and <span style="font-family:monospace">Manual/Examples</span> (the files ending in
<span style="font-family:monospace">.g</span> and <span style="font-family:monospace">.lg</span>).</p><p>You can install <span style="font-family:sans-serif">Frown</span> using either traditional makefiles or Cabal.</p>
<h5 id="sec7" class="paragraph">Using makefiles</h5>
<p>Optionally, edit the <span style="font-family:monospace">Makefile</span> to specify destinations for the binary
and the documentation (this information is only used by <span style="font-family:monospace">make install</span>). Now, you can trigger
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> make
</span></td></tr>
</table><p>
which compiles <span style="font-family:sans-serif">Frown</span> generating an executable called <span style="font-family:monospace">frown</span> (to use
<span style="font-family:sans-serif">Frown</span> you only need this executable). Optionally, continue with
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> make install
</span></td></tr>
</table><p>
to install the executable and the documentation.</p><p>For reference, here is a list of possible targets:
</p><dl class="description"><dt class="dt-description">
<span style="font-weight:bold"><span style="font-family:monospace">make</span></span></dt><dd class="dd-description"> <br>
Compiles <span style="font-family:sans-serif">Frown</span> generating an executable called <span style="font-family:monospace">frown</span> (to use <span style="font-family:sans-serif">Frown</span>
you only need this executable).</dd><dt class="dt-description"><span style="font-weight:bold"><span style="font-family:monospace">make install</span></span></dt><dd class="dd-description"> <br>
Compiles <span style="font-family:sans-serif">Frown</span> and installs the executable and the documentation.</dd><dt class="dt-description"><span style="font-weight:bold"><span style="font-family:monospace">make test</span></span></dt><dd class="dd-description"> <br>
Runs the testsuite.<sup><a id="text1" href="#note1">1</a></sup></dd><dt class="dt-description"><span style="font-weight:bold"><span style="font-family:monospace">make man</span></span></dt><dd class="dd-description"> <br>
Generates the documentation in various formats (dvi, ps, PDF, and
HTML).</dd><dt class="dt-description"><span style="font-weight:bold"><span style="font-family:monospace">make clean</span></span></dt><dd class="dd-description"> <br>
Removes some temporary files.</dd><dt class="dt-description"><span style="font-weight:bold"><span style="font-family:monospace">make distclean</span></span></dt><dd class="dd-description"> <br>
Removes all files except the ones that are included in the distribution.
</dd></dl>
<h5 id="sec8" class="paragraph">Using Cabal</h5>
<p>Alternatively, you can build <span style="font-family:sans-serif">Frown</span> using Cabal (version 1.1.3 or
later), Haskell’s Common Architecture for Building Applications and
Libraries.</p><p>For a global install, type:
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs configure --ghc</span></td></tr>
<tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs build</span></td></tr>
<tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs install
</span></td></tr>
</table><p>
If you want to install <span style="font-family:sans-serif">Frown</span> locally, use (you may wish to replace
<span style="font-family:monospace">$HOME</span> by a directory of your choice):
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs configure --ghc --prefix=$HOME</span></td></tr>
<tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs build</span></td></tr>
<tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> runhaskell Setup.hs install --user
</span></td></tr>
</table>
<h5 id="sec9" class="paragraph">Usage</h5>
<p>The call
</p><table style="border:0;border-spacing:0" class="cellpadding0"><tr><td style="text-align:left;white-space:nowrap" ><span style="font-family:monospace"> ralf/Frown> frown -h
</span></td></tr>
</table><p>
displays the various options. For more information consult this
manual.</p>
<h2 id="sec10" class="section">1.2 Reporting bugs</h2>
<p>Bug reports should be send to Ralf Hinze (<span style="font-family:monospace">ralf@cs.uni-bonn.de</span>).
The report should include all information necessary to reproduce the
bug: the compiler used to compile <span style="font-family:sans-serif">Frown</span>, the grammar source file (and
possibly auxiliary Haskell source files), and the command-line
invocation of <span style="font-family:sans-serif">Frown</span>.</p><p>Suggestions for improvements or request for features should also be
sent to the above address.</p>
<h2 id="sec11" class="section">1.3 License</h2>
<p><span style="font-family:sans-serif">Frown</span> is distributed under the GNU general public licence
(version 2).</p><pre class="verbatim">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Frown --- An LALR(k) parser generator for Haskell 98 %
% Copyright (C) 2001-2005 Ralf Hinze %
% %
% This program is free software; you can redistribute it and/or modify %
% it under the terms of the GNU General Public License (version 2) as %
% published by the Free Software Foundation. %
% %
% This program is distributed in the hope that it will be useful, %
% but WITHOUT ANY WARRANTY; without even the implied warranty of %
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %
% GNU General Public License for more details. %
% %
% You should have received a copy of the GNU General Public License %
% along with this program; see the file COPYING. If not, write to %
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330, %
% Boston, MA 02111-1307, USA. %
% %
% Contact information %
% Email: Ralf Hinze <ralf@cs.uni-bonn.de> %
% Homepage: http://www.informatik.uni-bonn.de/~ralf/ %
% Paper mail: Dr. Ralf Hinze %
% Institut für Informatik III %
% Universität Bonn %
% Römerstraße 164 %
% 53117 Bonn, Germany %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
</pre>
<h2 id="sec12" class="section">1.4 Credits</h2>
<p><span style="font-family:sans-serif">Frown</span> wouldn’t have seen the light of day without the work of Ross
Paterson and Doaitse Swierstra. Ross invoked my interest in LR parsing
and he devised the <span style="font-family:monospace">--code=stackless</span> and <span style="font-family:monospace">--code=gvstack</span> output
formats. Doaitse invented the <span style="font-family:monospace">--code=standard</span> format, which was
historically the first format <span style="font-family:sans-serif">Frown</span> supported.</p><p>A big thank you goes to Andres Löh and Ross Paterson for various bug
reports and suggestions for improvement.</p>
<hr class="footnoterule"><dl class="thefootnotes"><dt class="dt-thefootnotes">
<a id="note1" href="#text1">1</a></dt><dd class="dd-thefootnotes"><div class="footnotetext">There are some known problems. The
format <span style="font-family:monospace">code=stackless</span> behaves differently for <span style="font-family:monospace">Loop.g</span> (the
generated parser is less strict than the standard one). Also,
<span style="font-family:monospace">Empty.g</span> does not work yet. Finally, error reports may differ for
different formats and for optimized and unoptimized versions (as some
parsers perform additional reductions before an error is
reported).</div>
</dd></dl>
<hr>
<a href="Manual001.html"><img src="previous_motif.gif" alt="Previous"></a>
<a href="index.html"><img src="contents_motif.gif" alt="Up"></a>
<a href="Manual003.html"><img src="next_motif.gif" alt="Next"></a>
</body>
</html>
|