Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 52a37fb77746ef557a2ec666070d732e > files > 39

bigloo-doc-3.2b-3.fc12.i686.rpm

<!-- 95% W3C COMPLIANT, 95% CSS FREE, RAW HTML -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<title>BiglooA ``practical Scheme compiler''User manual for version 3.2bJune 2009</title>
 <style type="text/css">
  <!--
  pre { font-family: monospace }
  tt { font-family: monospace }
  code { font-family: monospace }
  p.flushright { text-align: right }
  p.flushleft { text-align: left }
  span.sc { font-variant: small-caps }
  span.sf { font-family: sans-serif }
  span.skribetitle { font-family: sans-serif; font-weight: bolder; font-size: x-large; }
  span.refscreen { }
  span.refprint { display: none; }
  -->
 </style>
</head>

<body class="chapter" bgcolor="#ffffff">
<table width="100%" class="skribetitle" cellspacing="0" cellpadding="0"><tbody>
<tr><td align="center" bgcolor="#8381de"><div class="skribetitle"><strong><big><big><big>32. Bigloo<br/>A ``practical Scheme compiler''<br/>User manual for version 3.2b<br/>June 2009 -- Bigloo Development Environment</big></big></big></strong></div><center>
</center>
</td></tr></tbody></table>
<table cellpadding="3" cellspacing="0" width="100%" class="skribe-margins"><tr>
<td align="left" valign="top" class="skribe-left-margin" width="20%" bgcolor="#dedeff"><div class="skribe-left-margin">
<br/><center id='center31205'
><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr bgcolor="#8381de"><th id="tc31195" align="center" colspan="1"><font color="#ffffff"><strong id='bold31193'
>main page</strong></font></th></tr>
<tr bgcolor="#ffffff"><td id="tc31202" align="center" colspan="1"><table width="100%" border="0" style="border-collapse: collapse;" frame="void" rules="none"><tbody>
<tr><td id="tc31198" align="left" valign="top" colspan="1"><strong id='bold31197'
>top:</strong></td><td id="tc31199" align="right" valign="top" colspan="1"><a href="bigloo.html#Bigloo-A-``practical-Scheme-compiler''-User-manual-for-version-3.2b-June-2009" class="inbound">Bigloo<br/>A ``practical Scheme compiler''<br/>User manual for version 3.2b<br/>June 2009</a></td></tr>
</tbody></table>
</td></tr>
</tbody></table>
</center>
<br/><br/><center id='center31215'
><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr bgcolor="#8381de"><th id="tc31209" align="center" colspan="1"><font color="#ffffff"><strong id='bold31207'
>Bigloo Development Environment</strong></font></th></tr>
<tr bgcolor="#ffffff"><td id="tc31212" align="center" colspan="1"><table cellspacing="1" cellpadding="1" width="100%" class="toc">
<tbody>
 <tr><td valign="top" align="left">32.1</td><td colspan="4" width="100%"><a href="bigloo-33.html#Installing-the-Bee">Installing the <span class="sc">Bee</span></a></td></tr>
 <tr><td valign="top" align="left">32.2</td><td colspan="4" width="100%"><a href="bigloo-33.html#Entering-the-Bee">Entering the Bee</a></td></tr>
 <tr><td valign="top" align="left">32.3</td><td colspan="4" width="100%"><a href="bigloo-33.html#The-Bee-Root-Directory">The <em id='emph25459'
>Bee Root Directory</em></a></td></tr>
 <tr><td valign="top" align="left">32.4</td><td colspan="4" width="100%"><a href="bigloo-33.html#Building-a-Makefile">Building a Makefile</a></td></tr>
 <tr><td valign="top" align="left">32.5</td><td colspan="4" width="100%"><a href="bigloo-33.html#Compiling">Compiling</a></td></tr>
 <tr><td valign="top" align="left">32.6</td><td colspan="4" width="100%"><a href="bigloo-33.html#Interpreting">Interpreting</a></td></tr>
 <tr><td valign="top" align="left">32.7</td><td colspan="4" width="100%"><a href="bigloo-33.html#Pretty-Printing">Pretty Printing</a></td></tr>
 <tr><td valign="top" align="left">32.8</td><td colspan="4" width="100%"><a href="bigloo-33.html#Expansing">Expansing</a></td></tr>
 <tr><td valign="top" align="left">32.9</td><td colspan="4" width="100%"><a href="bigloo-33.html#On-line-Documentation">On-line Documentation</a></td></tr>
 <tr><td valign="top" align="left">32.10</td><td colspan="4" width="100%"><a href="bigloo-33.html#Searching-for-Source-Code">Searching for Source Code</a></td></tr>
 <tr><td valign="top" align="left">32.11</td><td colspan="4" width="100%"><a href="bigloo-33.html#Importing-and-Exporting">Importing and Exporting</a></td></tr>
 <tr><td valign="top" align="left">32.12</td><td colspan="4" width="100%"><a href="bigloo-33.html#Debugging">Debugging</a></td></tr>
 <tr><td valign="top" align="left">32.13</td><td colspan="4" width="100%"><a href="bigloo-33.html#Profiling">Profiling</a></td></tr>
 <tr><td valign="top" align="left">32.14</td><td colspan="4" width="100%"><a href="bigloo-33.html#Revision-Control">Revision Control</a></td></tr>
 <tr><td valign="top" align="left">32.15</td><td colspan="4" width="100%"><a href="bigloo-33.html#Literate-Programming">Literate Programming</a></td></tr>
</tbody>
</table>
</td></tr>
</tbody></table>
</center>
<br/><br/><center id='center31225'
><table width="97%" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse;" frame="box" rules="none"><tbody>
<tr bgcolor="#8381de"><th id="tc31219" align="center" colspan="1"><font color="#ffffff"><strong id='bold31217'
>Chapters</strong></font></th></tr>
<tr bgcolor="#ffffff"><td id="tc31222" align="center" colspan="1"><table cellspacing="1" cellpadding="1" width="100%" class="toc">
<tbody>
 <tr><td valign="top" align="left"></td><td colspan="4" width="100%"><a href="bigloo-1.html#Acknowledgements">Acknowledgements</a></td></tr>
 <tr><td valign="top" align="left">1</td><td colspan="4" width="100%"><a href="bigloo-2.html#Table-of-contents">Table of contents</a></td></tr>
 <tr><td valign="top" align="left">2</td><td colspan="4" width="100%"><a href="bigloo-3.html#Overview-of-Bigloo">Overview of Bigloo</a></td></tr>
 <tr><td valign="top" align="left">3</td><td colspan="4" width="100%"><a href="bigloo-4.html#Modules">Modules</a></td></tr>
 <tr><td valign="top" align="left">4</td><td colspan="4" width="100%"><a href="bigloo-5.html#Core-Language">Core Language</a></td></tr>
 <tr><td valign="top" align="left">5</td><td colspan="4" width="100%"><a href="bigloo-6.html#DSSSL-support">DSSSL support</a></td></tr>
 <tr><td valign="top" align="left">6</td><td colspan="4" width="100%"><a href="bigloo-7.html#Standard-Library">Standard Library</a></td></tr>
 <tr><td valign="top" align="left">7</td><td colspan="4" width="100%"><a href="bigloo-8.html#Pattern-Matching">Pattern Matching</a></td></tr>
 <tr><td valign="top" align="left">8</td><td colspan="4" width="100%"><a href="bigloo-9.html#Fast-search">Fast search</a></td></tr>
 <tr><td valign="top" align="left">9</td><td colspan="4" width="100%"><a href="bigloo-10.html#Structures-and-Records">Structures and Records</a></td></tr>
 <tr><td valign="top" align="left">10</td><td colspan="4" width="100%"><a href="bigloo-11.html#Object-System">Object System</a></td></tr>
 <tr><td valign="top" align="left">11</td><td colspan="4" width="100%"><a href="bigloo-12.html#Regular-parsing">Regular parsing</a></td></tr>
 <tr><td valign="top" align="left">12</td><td colspan="4" width="100%"><a href="bigloo-13.html#Lalr(1)-parsing">Lalr(1) parsing</a></td></tr>
 <tr><td valign="top" align="left">13</td><td colspan="4" width="100%"><a href="bigloo-14.html#Posix-Regular-Expressions">Posix Regular Expressions</a></td></tr>
 <tr><td valign="top" align="left">14</td><td colspan="4" width="100%"><a href="bigloo-15.html#Command-Line-Parsing">Command Line Parsing</a></td></tr>
 <tr><td valign="top" align="left">15</td><td colspan="4" width="100%"><a href="bigloo-16.html#Cryptography">Cryptography</a></td></tr>
 <tr><td valign="top" align="left">16</td><td colspan="4" width="100%"><a href="bigloo-17.html#Errors-Assertions-and-Traces">Errors, Assertions, and Traces</a></td></tr>
 <tr><td valign="top" align="left">17</td><td colspan="4" width="100%"><a href="bigloo-18.html#Threads">Threads</a></td></tr>
 <tr><td valign="top" align="left">18</td><td colspan="4" width="100%"><a href="bigloo-19.html#Database-library">Database library</a></td></tr>
 <tr><td valign="top" align="left">19</td><td colspan="4" width="100%"><a href="bigloo-20.html#Multimedia-library">Multimedia library</a></td></tr>
 <tr><td valign="top" align="left">20</td><td colspan="4" width="100%"><a href="bigloo-21.html#Mail-library">Mail library</a></td></tr>
 <tr><td valign="top" align="left">21</td><td colspan="4" width="100%"><a href="bigloo-22.html#Eval-and-code-interpretation">Eval and code interpretation</a></td></tr>
 <tr><td valign="top" align="left">22</td><td colspan="4" width="100%"><a href="bigloo-23.html#Macro-expansion">Macro expansion</a></td></tr>
 <tr><td valign="top" align="left">23</td><td colspan="4" width="100%"><a href="bigloo-24.html#Parameters">Parameters</a></td></tr>
 <tr><td valign="top" align="left">24</td><td colspan="4" width="100%"><a href="bigloo-25.html#Explicit-typing">Explicit typing</a></td></tr>
 <tr><td valign="top" align="left">25</td><td colspan="4" width="100%"><a href="bigloo-26.html#The-C-interface">The C interface</a></td></tr>
 <tr><td valign="top" align="left">26</td><td colspan="4" width="100%"><a href="bigloo-27.html#The-Java-interface">The Java interface</a></td></tr>
 <tr><td valign="top" align="left">27</td><td colspan="4" width="100%"><a href="bigloo-28.html#Bigloo-Libraries">Bigloo Libraries</a></td></tr>
 <tr><td valign="top" align="left">28</td><td colspan="4" width="100%"><a href="bigloo-29.html#Extending-the-Runtime-System">Extending the Runtime System</a></td></tr>
 <tr><td valign="top" align="left">29</td><td colspan="4" width="100%"><a href="bigloo-30.html#SRFIs">SRFIs</a></td></tr>
 <tr><td valign="top" align="left">30</td><td colspan="4" width="100%"><a href="bigloo-31.html#Compiler-description">Compiler description</a></td></tr>
 <tr><td valign="top" align="left">31</td><td colspan="4" width="100%"><a href="bigloo-32.html#User-Extensions">User Extensions</a></td></tr>
 <tr><td valign="top" align="left">32</td><td colspan="4" width="100%"><a href="bigloo-33.html#Bigloo-Development-Environment">Bigloo Development Environment</a></td></tr>
 <tr><td valign="top" align="left">33</td><td colspan="4" width="100%"><a href="bigloo-34.html#Global-Index">Global Index</a></td></tr>
 <tr><td valign="top" align="left">34</td><td colspan="4" width="100%"><a href="bigloo-35.html#Library-Index">Library Index</a></td></tr>
 <tr><td valign="top" align="left"></td><td colspan="4" width="100%"><a href="bigloo-36.html#Bibliography">Bibliography</a></td></tr>
</tbody>
</table>
</td></tr>
</tbody></table>
</center>
</div></td>
<td align="left" valign="top" class="skribe-body"><div class="skribe-body">
<a name="Bee" class="mark"></a><a name="g25386" class="mark"></a>
Bigloo release 2.0 or more recent contains an Integrated Development 
Environment. This environment proposes some services:<br/><br/><ul class="itemize" id='itemize25398'
><li>Automatic Makefile creation and update.
</li>
<li>Code browsing.
</li>
<li>Revision control.
</li>
<li>Symbol debugging.
</li>
<li>Profiling.
</li>
<li>On-line documentation.
</li>
<li>Source code interpretation.
</li>
<li>Source code expansion.
</li>
<li>Literate programming.
</li>
</ul>
The environment relies on Bigloo tools:
<ul class="itemize" id='itemize25411'
><li><code id='code25399'
>bglafile</code>: a Module access file generator (see <a href="bigloo-4.html#Module-Access-File" class="inbound">Module Access File</a>).
</li>
<li><code id='code25401'
>bglmake</code>: a Makefile creator.
</li>
<li><code id='code25403'
>bgldepend</code>: a that creates Bigloo dependencies in makefiles.
</li>
<li><code id='code25405'
>bglpp</code>: a pretty printer.
</li>
<li><code id='code25407'
>bglprof</code>: a profiler
</li>
<li><code id='code25409'
>bgltags</code>: a generator of tag file for Emacs.
</li>
</ul>
Each of these tools comes with a dedicated manual page and are not described
in this documentation. <br/><br/>Extra tools are required for the environment to go its full speed:
<ul class="itemize" id='itemize25426'
><li><code id='code25413'
>Emacs</code> version 21 (or more recent) (<a href="http://www.emacs.org/">http://www.emacs.org/</a>)
or <code id='code25414'
>Xemacs</code> version 20.4 (or more recent)
(<a href="http://www.xemacs.org/">http://www.xemacs.org/</a>).
</li>
<li><code id='code25416'
>prcs</code> version 1.2.1 or more recent
(<a href="http://prcs.sourceforge.net/">http://prcs.sourceforge.net/</a>).
</li>
<li><code id='code25418'
>gdb</code> version 4.17 or more recent 
(<a href="http://www.cygnus.com/gdb/">http://www.cygnus.com/gdb/</a>).
</li>
<li><code id='code25420'
>gprof</code> (<a href="ftp:/prep.ai.mit.edu:pub/gnu/">ftp:/prep.ai.mit.edu:pub/gnu/</a>).
</li>
<li><code id='code25422'
>texinfo</code> (<a href="ftp:/prep.ai.mit.edu:pub/gnu/">ftp:/prep.ai.mit.edu:pub/gnu/</a>).
</li>
<li><code id='code25424'
>gmake</code> (<a href="ftp:/prep.ai.mit.edu:pub/gnu/">ftp:/prep.ai.mit.edu:pub/gnu/</a>).
</li>
</ul><br/><br/>The following document describes the <span class="sc">Bee</span>, the Bigloo Emacs
Environment.<br/><br/>
<!-- Installing the Bee -->
<a name="Installing-the-Bee"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.1 Installing the <span class="sc">Bee</span></font>
</h3></td></tr></table>
</div><div class="section">
<a name="Installing-the-Bee" class="mark"></a><a name="g25431" class="mark"></a>
The standard procedure for installing Bigloo handles the compilation
of all tools required by the <span class="sc">Bee</span>. Additional Emacs-lisp code have
to be appended to your <code id='code25434'
>.emacs</code> file:<br/><br/><center id='center25448'
><table cellspacing="0" class="color" cellpadding="0" width="95%"><tbody>
<tr><td bgcolor="#ffffcc"><pre class="prog" id='prog25446'
>(autoload 'bdb <font color="red">&quot;bdb&quot;</font> <font color="red">&quot;bdb mode&quot;</font> t)
(autoload 'bee-mode <font color="red">&quot;bee-mode&quot;</font> <font color="red">&quot;bee mode&quot;</font> t)<br/><br/>(setq auto-mode-alist
      (append '((<font color="red">&quot;\\.scm$&quot;</font> . bee-mode)
                (<font color="red">&quot;\\.sch$&quot;</font> . bee-mode)
                (<font color="red">&quot;\\.scme$&quot;</font> . bee-mode)
                (<font color="red">&quot;\\.bgl$&quot;</font> . bee-mode)
                (<font color="red">&quot;\\.bee$&quot;</font> . bee-mode))
              auto-mode-alist))
</pre>
</td></tr>
</tbody></table></center>

This code will force <code id='code25449'
>emacs</code> to switch to <span class="sc">Bee</span> mode when editing
Scheme source files.<br/><br/></div><br>
<!-- Entering the Bee -->
<a name="Entering-the-Bee"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.2 Entering the Bee</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Entering-the-Bee" class="mark"></a><a name="g25452" class="mark"></a>
Once, your <code id='code25454'
>.emacs</code> is updated, to start the <span class="sc">Bee</span> you just need
to edit a file suffixed with one of the suffix listed in
<code id='code25457'
><em id='it25456'
>auto-mode-alist</em></code> with Emacs. You may either enter the Bee within
Emacs with <code id='code25458'
>ESC-X: bee-mode</code>.
 
</div><br>
<!-- The Bee Root Directory -->
<a name="The-Bee-Root-Directory"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.3 The <em id='emph25459'
>Bee Root Directory</em></font>
</h3></td></tr></table>
</div><div class="section">
<a name="The-Bee-Root-Directory" class="mark"></a><a name="g25460" class="mark"></a>
The <em id='emph25462'
>Bee Root Directory</em> is the directory that contains information
files that describe a project. When editing a file, the <span class="sc">Bee</span> tries to
automatically setup the <em id='emph25464'
>Bee Root Directory</em>. For that, it seeks one
of the following file: <code id='code25465'
>Makefile</code>, <code id='code25466'
>.afile</code> or <code id='code25467'
>.etags</code>.
This search unwind directories until the root directory is reached or until
the number of scanned directories is more than the value of the list
variable <code id='code25468'
>bee-root-search-depth</code>.<br/><br/>An alternative <em id='emph25470'
>Bee Root Directory</em> may be set. This is done clicking
on the <code id='code25471'
>Root</code> of the tool bar icon.<br/><br/></div><br>
<!-- Building a Makefile -->
<a name="Building-a-Makefile"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.4 Building a Makefile</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Building-a-Makefile" class="mark"></a><a name="g25473" class="mark"></a>
Once, the <em id='emph25475'
>Bee Root Directory</em> has been setup (it is printed on the
left part to the Emacs modeline), a <code id='code25476'
>Makefile</code> can be automatically
produced. It can be achieved clicking on the <code id='code25477'
>Mkmf</code> icon
of the tool bar, using the popup menu (<kbd id='kbd25478'
>button-3</kbd>) entries, or using
one of the two keyboard bindings <kbd id='kbd25479'
>C-c C-c C-a</kbd> or <kbd id='kbd25480'
>C-c C-c C-l</kbd>.
When creating a <code id='code25481'
>Makefile</code>, you will be asked to give a file name.
This file must be the one that is the main entry point of your program
or the one that implements an library heap file.<br/><br/>When the <code id='code25483'
>Makefile</code> already exists, using the same bindings update 
Makefile, re-generate <code id='code25484'
>.afile</code> and <code id='code25485'
>.etags</code> files.<br/><br/></div><br>
<!-- Compiling -->
<a name="Compiling"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.5 Compiling</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Compiling" class="mark"></a><a name="g25487" class="mark"></a>
Once a <code id='code25489'
>Makefile</code> exists, it is possible to compile a program
(or a library). Use either the tool bar icon <code id='code25490'
>Compile</code>, the popup
menu entry or <kbd id='kbd25491'
>C-c C-c C-c</kbd>. If no <code id='code25492'
>Makefile</code> exists, the <span class="sc">Bee</span>
will emit a single file compilation.<br/><br/></div><br>
<!-- Interpreting -->
<a name="Interpreting"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.6 Interpreting</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Interpreting" class="mark"></a><a name="g25495" class="mark"></a>
Scheme source code may be interpreted within the <span class="sc">Bee</span> instead of
been compiled prior to be executed. This facility could be convenient
for fast prototyping. A <em id='emph25498'
>Read eval print</em> loop (henceforth
<em id='emph25499'
>Repl</em>) could be spawned using the <code id='code25500'
>Repl</code> icon of the tool
bar, using the popup menu entry or using the <kbd id='kbd25501'
>C-c C-r C-r</kbd> binding.<br/><br/>Parts or the whole buffer may be sent to <em id='emph25503'
>repl</em>.<br/><br/><ul class="itemize" id='itemize25515'
><li><kbd id='kbd25505'
>C-c C-r b</kbd> sends the whole buffer.
</li>
<li><kbd id='kbd25507'
>C-c C-r d</kbd> sends the define form the cursor is in.
</li>
<li><kbd id='kbd25509'
>C-c C-r l</kbd> sends the s-expression that preceeds the cursor.
</li>
<li><kbd id='kbd25511'
>C-c C-r t</kbd> sends the top level s-expression the cursor is in.
</li>
<li><kbd id='kbd25513'
>C-c C-r r</kbd> sends the marked region.
</li>
</ul>
</div><br>
<!-- Pretty Printing -->
<a name="Pretty-Printing"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.7 Pretty Printing</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Pretty-Printing" class="mark"></a><a name="g25516" class="mark"></a>
The whole buffer may be pretty printed (long source lines are split) using the
<code id='code25518'
>Lisp</code> icon of the tool bar, using the popup menu entry of using
<kbd id='kbd25520'
>C-c C-i <kbd id='kbd25519'
>tab</kbd></kbd>.<br/><br/>Parts or the buffer may be indented (no line is split).<br/><br/><ul class="itemize" id='itemize25529'
><li><kbd id='kbd25523'
>C-c C-i d</kbd> indents the define form the cursor is in.
</li>
<li><kbd id='kbd25525'
>C-c C-i l</kbd> indents the s-expression that preceeds the cursor.
</li>
<li><kbd id='kbd25527'
>C-c C-i t</kbd> indents the top level s-expression the cursor is in.
</li>
</ul>
</div><br>
<!-- Expansing -->
<a name="Expansing"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.8 Expansing</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Expansing" class="mark"></a><a name="g25530" class="mark"></a>
For debug purposes, result of the source code macro expansion may be
checked within the <span class="sc">Bee</span>. <br/><br/>Parts or the whole buffer may be sent to <em id='emph25534'
>repl</em>.<br/><br/><ul class="itemize" id='itemize25546'
><li><kbd id='kbd25536'
>C-c C-e C-e</kbd> expands the whole buffer.
</li>
<li><kbd id='kbd25538'
>C-c C-e C-d</kbd> expands the define form the cursor is in.
</li>
<li><kbd id='kbd25540'
>C-c C-e C-l</kbd> expands the s-expression that preceeds the cursor.
</li>
<li><kbd id='kbd25542'
>C-c C-e C-t</kbd> expands the top level s-expression the cursor is in.
</li>
<li><kbd id='kbd25544'
>C-c C-e C-r</kbd> expands the marked region.
</li>
</ul>
When a part of the buffer is expanded (by opposition to the whole buffer), the
buffer is scan for macro definitions. These macros will be used for expanding
the requested form.<br/><br/></div><br>
<!-- On-line Documentation -->
<a name="On-line-Documentation"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.9 On-line Documentation</font>
</h3></td></tr></table>
</div><div class="section">
<a name="On-line-documentation" class="mark"></a><a name="g25548" class="mark"></a>
On-line documentation may be popped up. This is always done, clicking on
the <code id='code25550'
>Info</code> icon of the tool bar or <kbd id='kbd25551'
>C-c C-d i</kbd>. If an emacs
region is active, the documentation about that region will be popped up.
If the cursor is at a Scheme identifier, the documentation of that
identifier will be printed. Otherwise, the user will be prompted for the
Section of the documentation to be printed.<br/><br/>Clicking on the <code id='code25553'
>?</code> icon tool bar, pops up a short description of
the Bigloo compiler options. <br/><br/>The <span class="sc">Bee</span> uses <code id='code25556'
>info</code> files for printing On-line
documentation. It always search the standard documentation and the
standard definition of Scheme. It is possible to add extra <code id='code25557'
>info</code>
files to be searched.  The <span class="sc">Bee</span> always checks for a directory
<code id='code25559'
>info</code> in the <em id='emph25560'
>Bee Root Directory</em>. If such a directory
exists, contained file will be considered for the search of a document.<br/><br/></div><br>
<!-- Searching for Source Code -->
<a name="Searching-for-Source-Code"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.10 Searching for Source Code</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Searching-for-source-code" class="mark"></a><a name="g25562" class="mark"></a>
Searching for source (variable declaration, module definition, variable
usage) is supported by the <span class="sc">Bee</span>. Clicking on the <code id='code25565'
>Find</code> icon of
the tool bar will pops up the definition of the variable the cursor is
in or the definition of the module the cursor is in. These two
operations may be requested using <kbd id='kbd25566'
>C-x 5 .</kbd> for searching a variable
definition, <kbd id='kbd25567'
>C-c C-d m</kbd> for a module definition.<br/><br/>Information and usages of a variable may be printed using either the
<code id='code25569'
>Doc</code> icon of the tool bar or the <kbd id='kbd25570'
>C-c C-d u</kbd> key binding.<br/><br/></div><br>
<!-- Importing and Exporting -->
<a name="Importing-and-Exporting"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.11 Importing and Exporting</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Importing-and-Exporting" class="mark"></a><a name="g25572" class="mark"></a>
Bigloo bindings (functions and variables) may be automatically inserted
in an export module clause (see <a href="bigloo-4.html#Modules" class="inbound">Modules</a>). Bring the cursor to an
identifier of a binding that has to be exported then, either click on
the <code id='code25574'
>Export</code> tool bar icon or use the <kbd id='kbd25575'
>C-c C-m b</kbd> key binding.<br/><br/>Bigloo bindings may be automatically inserted in an import module clause.
Bring the cursor to an identifier of a binding that has to be imported.
Either click on the <code id='code25577'
>Import</code> tool bar icon or use the 
<kbd id='kbd25578'
>C-c C-m i</kbd> key binding. The <span class="sc">Bee</span>, will search the modules for
the wanted binding. <br/><br/>Foreign bindings (e.g. C variables and C functions) may be automatically
inserted in the file module clause. Click on the <code id='code25581'
>Extern</code> tool bar
icon or use the key binding <kbd id='kbd25582'
>C-c C-m c</kbd> to import whole the definition
of an extern file. You will, be prompted an extern file name to be imported.
This operation <em id='emph25583'
>automatically updates</em> the <code id='code25584'
>Makefile</code> for reflecting
that the extern file is required in the compilation.<br/><br/></div><br>
<!-- Debugging -->
<a name="Debugging"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.12 Debugging</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Debugging" class="mark"></a><a name="g25586" class="mark"></a>
The Bigloo symbolic Debugger may be spawned either clicking on the
<code id='code25588'
>Bdb</code> tool bar icon or using the key binding <kbd id='kbd25589'
>C-c C-b C-b</kbd>.
Once the debugger is not is possible to connect the current buffer to
the debugger. This is done using the tool bar icon <code id='code25590'
>Connect</code> or the
key binding <kbd id='kbd25591'
>C-c C-b c</kbd>. This enables breakpoints to be inserted using
mouse clicks.<br/><br/></div><br>
<!-- Profiling -->
<a name="Profiling"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.13 Profiling</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Profiling" class="mark"></a><a name="g25593" class="mark"></a>
Automatically produced <code id='code25595'
>Makefile</code> provides entry for profiling. In
order to get a profile you must first compile your application for
profiling.  This is done using a popup menu entry or the <kbd id='kbd25596'
>C-c C-p c</kbd>
key binding. Once your program compiled you can run for profile using a
popup menu entry of the <kbd id='kbd25597'
>C-c C-p r</kbd> key binding. This last will run
your program, run <code id='code25598'
>bglprof</code> to get the profile and this will pops up
a window displaying the profile informations.<br/><br/></div><br>
<!-- Revision Control -->
<a name="Revision-Control"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.14 Revision Control</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Revision-control" class="mark"></a><a name="g25600" class="mark"></a>
Submitting a new revision is done using <kbd id='kbd25602'
>C-c C-v i</kbd> or using
an menu bar entry. This builds an new revision for the entire project.
The file that compose the project are listed in the <code id='code25603'
>pop</code> entry
of the <em id='emph25604'
>Bee Root Directory</em> <code id='code25605'
>Makefile</code>.<br/><br/>Checking out an older version of the file currently edited is done using
the key binding <kbd id='kbd25607'
>C-c C-v C-o</kbd>. This is not a retrieval of the entire
project. Global check out may be performed manually. <br/><br/>Comparing the version of the file currently edited with older one is
done using <kbd id='kbd25609'
>C-c C-v d</kbd>. A <em id='emph25610'
>diff</em> of the two buffers will be
popped up.<br/><br/>With both checking out and comparison of versions. A window presenting
all the available version will be popped up to let you choose which
version you would like to inspect.<br/><br/></div><br>
<!-- Literate Programming -->
<a name="Literate-Programming"></a>
<div class="section-atitle"><table width="100%"><tr><td bgcolor="#dedeff"><h3><font color="black">32.15 Literate Programming</font>
</h3></td></tr></table>
</div><div class="section">
<a name="Literate-Programming" class="mark"></a><a name="g25613" class="mark"></a>
The <span class="sc">Bee</span> does not provide real <em id='emph25616'
>Literate Programming</em>. The reason
is that we think that when editing documentation we want to benefit the
full power of context-sensitive editors and we don't want to edit the
documentation is the same editor <em id='emph25617'
>mode</em> as the one we use when editing
source code. Nevertheless it is possible to place anchors within the source
file to the corresponding documentation file. Then, by the means of simple
mouse clicks, it becomes possible to edit the documentation of peace of
codes. The current <span class="sc">Bee</span> literate programming system only supports the
<em id='emph25619'
>Texinfo</em> file format.<br/><br/>For that purpose three anchors are available: <code id='code25621'
>path</code>, <code id='code25622'
>node</code> and
<code id='code25623'
>deffn</code>. All anchor have to be delimited with <code id='code25624'
>&#x40;</code> characters.<br/><br/><ul class="itemize" id='itemize25662'
><li><code id='code25626'
>path</code>: this anchor set the path to the file containing the 
documentation. Thus,<br/><br/><center id='center25632'
><table cellspacing="0" class="color" cellpadding="0" width="95%"><tbody>
<tr><td bgcolor="#ffffcc"><pre class="prog" id='prog25630'
>(<font color="#1919af"><strong id='bold31235'
>module</strong></font> <font color="#1919af"><strong id='bold31237'
>foo</strong></font>
   <font color="#ffa600"><em id='it31239'
>;; </em></font>&#x40;path manuals/foo.texi&#x40;
   ...)
</pre>
</td></tr>
</tbody></table></center>

Tells the <span class="sc">Bee</span> that the documentation for the module <code id='code25634'
>foo</code> is located
in the file named <code id='code25635'
>manuals/foo.texi</code>.<br/><br/></li>
<li><code id='code25638'
>node</code>: sets the name of the node that documents this particular
source file code.<br/><br/><center id='center25644'
><table cellspacing="0" class="color" cellpadding="0" width="95%"><tbody>
<tr><td bgcolor="#ffffcc"><pre class="prog" id='prog25642'
>(<font color="#1919af"><strong id='bold31241'
>module</strong></font> <font color="#1919af"><strong id='bold31243'
>foo</strong></font>
   <font color="#ffa600"><em id='it31245'
>;; </em></font>&#x40;path manuals/foo.texi&#x40;
   <font color="#ffa600"><em id='it31247'
>;; </em></font>&#x40;node Foo&#x40;
   ...)
</pre>
</td></tr>
</tbody></table></center>

</li>
<li><code id='code25646'
>deffn</code>: each variable binding may point to its documentation.
For that, it suffices to use the <code id='code25647'
>deffn</code> anchor just before the 
variable definition or within the s-expression that defines the variable.<br/><br/><center id='center25652'
><table cellspacing="0" class="color" cellpadding="0" width="95%"><tbody>
<tr><td bgcolor="#ffffcc"><pre class="prog" id='prog25650'
><font color="#ffa600"><em id='it31249'
>;; </em></font>&#x40;deffn foo&#x40;
(<font color="#6959cf"><strong id='bold31251'
>define</strong></font> (<font color="#6959cf"><strong id='bold31253'
>foo</strong></font> . chars)
   ...)
</pre>
</td></tr>
</tbody></table></center>
or
<center id='center25656'
><table cellspacing="0" class="color" cellpadding="0" width="95%"><tbody>
<tr><td bgcolor="#ffffcc"><pre class="prog" id='prog25654'
>(<font color="#6959cf"><strong id='bold31255'
>define</strong></font> (<font color="#6959cf"><strong id='bold31257'
>foo</strong></font> . chars)
   <font color="#ffa600"><em id='it31259'
>;; </em></font>&#x40;deffn foo&#x40;
   ...)
</pre>
</td></tr>
</tbody></table></center>

When clicking on that anchor, the <span class="sc">Bee</span> will search the documentation file
named by the <code id='code25658'
>path</code> anchor and within that file, will search for a 
<em id='emph25659'
>texinfo</em> <code id='code25660'
>deffn</code> command that defines the variable named in the 
anchor.
</li>
</ul><br/><br/><br/>
</div><br>
</div></td>
</tr></table><div class="skribe-ending">
<hr> 
<p class="ending" id='paragraph31266'
><font size="-1">
This <span class="sc">Html</span> page has been produced by 
<a href="http://www.inria.fr/mimosa/fp/Skribe" class="http">Skribe</a>.
<br/>
Last update <em id='it31264'
>Tue Jun  2 11:43:27 2009</em>.</font></p></div>
</body>
</html>