summary refs log tree commit diff stats
path: root/doc
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2009-05-08 16:36:06 +0200
committerAndreas Rumpf <rumpf_a@web.de>2009-05-08 16:36:06 +0200
commitdb4f617afcd095db087dcb52e3ea603cca111da7 (patch)
treeeeffcc8fb523171dc394c136acf9b8006ec4138f /doc
parent08bc9ac03c49db7bfcdee82f46aadf95a324e015 (diff)
downloadNim-db4f617afcd095db087dcb52e3ea603cca111da7.tar.gz
version 0.7.8
Diffstat (limited to 'doc')
-rw-r--r--doc/filelist.txt2
-rw-r--r--doc/grammar.txt2
-rw-r--r--doc/intern.txt31
-rw-r--r--doc/lib.txt13
-rw-r--r--doc/manual.txt2
-rw-r--r--doc/theindex.txt492
-rw-r--r--doc/tut2.txt5
7 files changed, 491 insertions, 56 deletions
diff --git a/doc/filelist.txt b/doc/filelist.txt
index e094b6fb3..0e636652a 100644
--- a/doc/filelist.txt
+++ b/doc/filelist.txt
@@ -7,6 +7,8 @@ Module          Description
 nimrod          main module: parses the command line and calls
                 ``main.MainCommand``
 main            implements the top-level command dispatching
+nimconf         implements the config file reader
+
 lexbase         buffer handling of the lexical analyser
 scanner         lexical analyser
 pnimsyn         Nimrod's parser
diff --git a/doc/grammar.txt b/doc/grammar.txt
index 9fbd1eb15..11e26e33f 100644
--- a/doc/grammar.txt
+++ b/doc/grammar.txt
@@ -30,7 +30,7 @@ symbol ::= '`' (KEYWORD | IDENT | operator | '(' ')'
                | '[' ']' | '=' | literal)+ '`'
          | IDENT
 primary ::= (prefixOperator optInd)* (symbol | constructor |
-                                             | castExpr | addrExpr) (
+                                      castExpr | addrExpr) (
                '.' optInd symbol
              | '(' optInd namedExprList [SAD] ')'
              | '[' optInd
diff --git a/doc/intern.txt b/doc/intern.txt
index 6496e0e29..646cb9d9c 100644
--- a/doc/intern.txt
+++ b/doc/intern.txt
@@ -18,6 +18,7 @@ The Nimrod project's directory structure is:
 Path           Purpose
 ============   ==============================================
 ``bin``        binary files go into here
+``build``      generated C code for the installation
 ``nim``        Pascal sources of the Nimrod compiler; this
                should be modified, not the Nimrod version in
                ``rod``!
@@ -28,7 +29,7 @@ Path           Purpose
                code go into here
 ``doc``        the documentation lives here; it is a bunch of
                reStructuredText files
-``dist``       download packages as zip archives go into here
+``dist``       additional packages for the distribution
 ``config``     configuration files for Nimrod go into here
 ``lib``        the Nimrod library lives here; ``rod`` depends
                on it!
@@ -45,8 +46,8 @@ The compiler is written in a subset of Pascal with special annotations so
 that it can be translated to Nimrod code automatically. This conversion is
 done by Nimrod itself via the undocumented ``boot`` command. Thus both Nimrod
 and Free Pascal can compile the Nimrod compiler. However, the Pascal version
-has no garbage collector and leaks memory like crazy! So the Pascal version
-should only be used for bootstrapping.
+has no garbage collector and leaks memory! So the Pascal version should only 
+be used for bootstrapping.
 
 Requirements for bootstrapping:
 
@@ -214,7 +215,7 @@ address within this page. So including a cell is done as follows:
 
 Removing a cell is analogous - the bit has to be set to zero.
 Single page descriptors are never deleted from the hash table. This is not
-needed as the data structures need to be periodically rebuilt anyway.
+needed as the data structures needs to be rebuilt periodically anyway.
 
 Complete traversal is done in this way::
 
@@ -288,11 +289,8 @@ The synax tree consists of nodes which may have an arbitrary number of
 children. Types and symbols are represented by other nodes, because they
 may contain cycles. The AST changes its shape after semantic checking. This
 is needed to make life easier for the code generators. See the "ast" module
-for the type definitions.
-
-I use the notation ``nodeKind(fields, [sons])`` for describing
-nodes. ``nodeKind[sons]`` is a short-cut for ``nodeKind([sons])``.
-XXX: Description of the language's syntax and the corresponding trees.
+for the type definitions. The `macros <macros.html>`_ module contains many
+examples how the AST represents each syntactic structure. 
 
 
 How the RTL is compiled
@@ -310,6 +308,21 @@ semantic checking, a ``compilerproc`` is a proc that is used by the code
 generator.
 
 
+Debugging Nimrod's memory management
+====================================
+
+The following paragraphs are mostly a reminder for myself. Things to keep
+in mind:
+
+* Segmentation faults can have multiple reasons: One that is frequently
+  forgotten is that *stack overflow* can trigger one!
+* If an assertion in Nimrod's memory manager or GC fails, the stack trace
+  keeps allocating memory! Thus a stack overflow may happen, hiding the
+  real issue. 
+* What seem to be C code generation problems is often a bug resulting from
+  not producing prototypes, so that some types default to ``cint``. Testing
+  without the ``-w`` option helps!
+
 
 Generation of dynamic link libraries
 ====================================
diff --git a/doc/lib.txt b/doc/lib.txt
index b45c02262..0b11c28cc 100644
--- a/doc/lib.txt
+++ b/doc/lib.txt
@@ -22,6 +22,9 @@ Pure libraries
   implicitly by the compiler. Do not import it directly. It relies on compiler
   magic to work.
 
+* `macros <macros.html>`_ 
+  Contains the AST API and documentation of Nimrod for writing macros.
+
 * `strutils <strutils.html>`_
   This module contains common string handling operations like converting a
   string into uppercase, splitting a string into substrings, searching for
@@ -33,6 +36,9 @@ Pure libraries
   commands, etc. This module is -- like any other basic library --
   platform independant.
 
+* `osproc <osproc.html>`_
+  Module for process communication beyond ``os.executeShellCommand``.
+
 * `math <math.html>`_
   Mathematical operations like cosine, square root.
 
@@ -60,6 +66,9 @@ Pure libraries
   to be somewhat error correcting, so that even some "wild HTML" found on the 
   web can be parsed with it.
 
+* `parsecsv <parsecsv.html>`_ 
+  The ``parsecsv`` module implements a simple high performance CSV parser.
+
 * `strtabs <strtabs.html>`_
   The ``strtabs`` module implements an efficient hash table that is a mapping
   from strings to strings. Supports a case-sensitive, case-insensitive and
@@ -98,6 +107,10 @@ Pure libraries
 * `md5 <md5.html>`_
   This module implements the MD5 checksum algorithm.
 
+* `xmlgen <xmlgen.html>`_
+  This module implements macros for HTML code generation.
+
+
 
 Impure libraries
 ================
diff --git a/doc/manual.txt b/doc/manual.txt
index 2fa24f756..9acaae3cd 100644
--- a/doc/manual.txt
+++ b/doc/manual.txt
@@ -1649,7 +1649,7 @@ possible within a single ``type`` section.
 Generics
 ~~~~~~~~
 
-`Version 0.7.6: Generic types like in the example do not work.`:red:
+`Version 0.7.8: Generic types like in the example do not work.`:red:
 
 Example:
 
diff --git a/doc/theindex.txt b/doc/theindex.txt
index 6aeb786fa..06be1fc5d 100644
--- a/doc/theindex.txt
+++ b/doc/theindex.txt
@@ -6,6 +6,9 @@ Index
 .. index::
 
 
+   `!`:idx:
+     `macros.html#115 <macros.html#115>`_
+
    `!=`:idx:
      `system.html#351 <system.html#351>`_
 
@@ -20,6 +23,7 @@ Index
      * `system.html#429 <system.html#429>`_
      * `times.html#109 <times.html#109>`_
      * `times.html#110 <times.html#110>`_
+     * `macros.html#116 <macros.html#116>`_
 
    `%`:idx:
      * `strutils.html#111 <strutils.html#111>`_
@@ -176,6 +180,7 @@ Index
      * `system.html#305 <system.html#305>`_
 
    `==`:idx:
+     * `md5.html#107 <md5.html#107>`_
      * `system.html#246 <system.html#246>`_
      * `system.html#247 <system.html#247>`_
      * `system.html#248 <system.html#248>`_
@@ -193,7 +198,7 @@ Index
      * `system.html#335 <system.html#335>`_
      * `system.html#458 <system.html#458>`_
      * `complex.html#102 <complex.html#102>`_
-     * `md5.html#107 <md5.html#107>`_
+     * `macros.html#117 <macros.html#117>`_
 
    `=~`:idx:
      `regexprs.html#111 <regexprs.html#111>`_
@@ -216,12 +221,21 @@ Index
    `[]`:idx:
      `strtabs.html#107 <strtabs.html#107>`_
 
+   `[]`:idx:
+     `macros.html#113 <macros.html#113>`_
+
    `[]=`:idx:
      `strtabs.html#106 <strtabs.html#106>`_
 
+   `[]=`:idx:
+     `macros.html#114 <macros.html#114>`_
+
    `[ESC]`:idx:
      `manual.html#134 <manual.html#134>`_
 
+   `a`:idx:
+     `xmlgen.html#107 <xmlgen.html#107>`_
+
    `abs`:idx:
      * `system.html#261 <system.html#261>`_
      * `system.html#262 <system.html#262>`_
@@ -231,6 +245,9 @@ Index
      * `system.html#320 <system.html#320>`_
      * `complex.html#108 <complex.html#108>`_
 
+   `acronym`:idx:
+     `xmlgen.html#108 <xmlgen.html#108>`_
+
    `acyclic`:idx:
      `nimrodc.html#113 <nimrodc.html#113>`_
 
@@ -240,6 +257,8 @@ Index
      * `system.html#368 <system.html#368>`_
      * `system.html#369 <system.html#369>`_
      * `system.html#370 <system.html#370>`_
+     * `macros.html#119 <macros.html#119>`_
+     * `macros.html#120 <macros.html#120>`_
 
    `addf`:idx:
      `strutils.html#113 <strutils.html#113>`_
@@ -252,6 +271,9 @@ Index
    `addQuitProc`:idx:
      `system.html#404 <system.html#404>`_
 
+   `address`:idx:
+     `xmlgen.html#109 <xmlgen.html#109>`_
+
    `addSep`:idx:
      `strutils.html#151 <strutils.html#151>`_
 
@@ -302,6 +324,9 @@ Index
    `arctan2`:idx:
      `math.html#125 <math.html#125>`_
 
+   `area`:idx:
+     `xmlgen.html#110 <xmlgen.html#110>`_
+
    `arithmetic bit shifts`:idx:
      `tut1.html#110 <tut1.html#110>`_
 
@@ -321,6 +346,9 @@ Index
    `assert`:idx:
      `system.html#418 <system.html#418>`_
 
+   `AST`:idx:
+     `macros.html#101 <macros.html#101>`_
+
    `attrKey`:idx:
      `parsexml.html#113 <parsexml.html#113>`_
 
@@ -334,6 +362,9 @@ Index
      * `manual.html#144 <manual.html#144>`_
      * `tut1.html#111 <tut1.html#111>`_
 
+   `b`:idx:
+     `xmlgen.html#111 <xmlgen.html#111>`_
+
    `backslash`:idx:
      * `manual.html#127 <manual.html#127>`_
      * `regexprs.html#101 <regexprs.html#101>`_
@@ -341,6 +372,12 @@ Index
    `backspace`:idx:
      `manual.html#132 <manual.html#132>`_
 
+   `base`:idx:
+     `xmlgen.html#112 <xmlgen.html#112>`_
+
+   `big`:idx:
+     `xmlgen.html#113 <xmlgen.html#113>`_
+
    `BiggestFloat`:idx:
      `system.html#374 <system.html#374>`_
 
@@ -362,6 +399,12 @@ Index
    `block`:idx:
      `manual.html#192 <manual.html#192>`_
 
+   `blockquote`:idx:
+     `xmlgen.html#114 <xmlgen.html#114>`_
+
+   `body`:idx:
+     `xmlgen.html#115 <xmlgen.html#115>`_
+
    `bool`:idx:
      `system.html#109 <system.html#109>`_
 
@@ -369,12 +412,18 @@ Index
      * `manual.html#146 <manual.html#146>`_
      * `tut1.html#107 <tut1.html#107>`_
 
+   `br`:idx:
+     `xmlgen.html#116 <xmlgen.html#116>`_
+
    `break`:idx:
      `manual.html#193 <manual.html#193>`_
 
    `breakpoint`:idx:
      `endb.html#103 <endb.html#103>`_
 
+   `button`:idx:
+     `xmlgen.html#117 <xmlgen.html#117>`_
+
    `Byte`:idx:
      `system.html#128 <system.html#128>`_
 
@@ -384,6 +433,9 @@ Index
    `capitalize`:idx:
      `strutils.html#119 <strutils.html#119>`_
 
+   `caption`:idx:
+     `xmlgen.html#118 <xmlgen.html#118>`_
+
    `card`:idx:
      `system.html#169 <system.html#169>`_
 
@@ -450,6 +502,9 @@ Index
    `cint`:idx:
      `system.html#378 <system.html#378>`_
 
+   `cite`:idx:
+     `xmlgen.html#119 <xmlgen.html#119>`_
+
    `classify`:idx:
      `math.html#104 <math.html#104>`_
 
@@ -532,6 +587,7 @@ Index
      * `lexbase.html#105 <lexbase.html#105>`_
      * `parsecfg.html#105 <parsecfg.html#105>`_
      * `parsexml.html#108 <parsexml.html#108>`_
+     * `parsecsv.html#109 <parsecsv.html#109>`_
      * `zipfiles.html#103 <zipfiles.html#103>`_
 
    `CloseFile`:idx:
@@ -556,6 +612,18 @@ Index
    `cmpRunesIgnoreCase`:idx:
      `unicode.html#115 <unicode.html#115>`_
 
+   `code`:idx:
+     `xmlgen.html#120 <xmlgen.html#120>`_
+
+   `col`:idx:
+     `xmlgen.html#121 <xmlgen.html#121>`_
+
+   `colgroup`:idx:
+     `xmlgen.html#122 <xmlgen.html#122>`_
+
+   `comma separated value`:idx:
+     `parsecsv.html#102 <parsecsv.html#102>`_
+
    `comment pieces`:idx:
      * `manual.html#115 <manual.html#115>`_
      * `tut1.html#103 <tut1.html#103>`_
@@ -564,6 +632,9 @@ Index
      * `manual.html#114 <manual.html#114>`_
      * `tut1.html#102 <tut1.html#102>`_
 
+   `commonAttr`:idx:
+     `xmlgen.html#105 <xmlgen.html#105>`_
+
    `COMP_HEADER_SIZE`:idx:
      `mysql.html#266 <mysql.html#266>`_
 
@@ -605,6 +676,15 @@ Index
    `copyMem`:idx:
      `system.html#410 <system.html#410>`_
 
+   `copyNimNode`:idx:
+     `macros.html#136 <macros.html#136>`_
+
+   `copyNimTree`:idx:
+     `macros.html#137 <macros.html#137>`_
+
+   `coreAttr`:idx:
+     `xmlgen.html#103 <xmlgen.html#103>`_
+
    `cos`:idx:
      `math.html#126 <math.html#126>`_
 
@@ -642,6 +722,9 @@ Index
    `cstringArray`:idx:
      `system.html#384 <system.html#384>`_
 
+   `CSV`:idx:
+     `parsecsv.html#101 <parsecsv.html#101>`_
+
    `cuint`:idx:
      `mysql.html#109 <mysql.html#109>`_
 
@@ -1014,6 +1097,9 @@ Index
    `dbgLineHook`:idx:
      `system.html#435 <system.html#435>`_
 
+   `dd`:idx:
+     `xmlgen.html#123 <xmlgen.html#123>`_
+
    `dead_code_elim`:idx:
      `nimrodc.html#114 <nimrodc.html#114>`_
 
@@ -1026,15 +1112,25 @@ Index
    `dec`:idx:
      `system.html#160 <system.html#160>`_
 
+   `decodeData`:idx:
+     `cgi.html#107 <cgi.html#107>`_
+
    `define`:idx:
      `manual.html#222 <manual.html#222>`_
 
    `defined`:idx:
      `system.html#114 <system.html#114>`_
 
+   `del`:idx:
+     * `xmlgen.html#124 <xmlgen.html#124>`_
+     * `macros.html#121 <macros.html#121>`_
+
    `deleteStr`:idx:
      `strutils.html#129 <strutils.html#129>`_
 
+   `dfn`:idx:
+     `xmlgen.html#125 <xmlgen.html#125>`_
+
    `Digits`:idx:
      `strutils.html#104 <strutils.html#104>`_
 
@@ -1050,6 +1146,10 @@ Index
      * `system.html#213 <system.html#213>`_
      * `system.html#214 <system.html#214>`_
      * `system.html#215 <system.html#215>`_
+     * `xmlgen.html#126 <xmlgen.html#126>`_
+
+   `dl`:idx:
+     `xmlgen.html#127 <xmlgen.html#127>`_
 
    `dom`:idx:
      `nimrodc.html#120 <nimrodc.html#120>`_
@@ -1058,6 +1158,9 @@ Index
      * `manual.html#211 <manual.html#211>`_
      * `tut2.html#111 <tut2.html#111>`_
 
+   `dt`:idx:
+     `xmlgen.html#128 <xmlgen.html#128>`_
+
    `dynamic type`:idx:
      `manual.html#104 <manual.html#104>`_
 
@@ -1099,11 +1202,14 @@ Index
      `system.html#145 <system.html#145>`_
 
    `editDistance`:idx:
-     `strutils.html#158 <strutils.html#158>`_
+     `strutils.html#159 <strutils.html#159>`_
 
    `EDivByZero`:idx:
      `system.html#141 <system.html#141>`_
 
+   `EInvalidCsv`:idx:
+     `parsecsv.html#105 <parsecsv.html#105>`_
+
    `EInvalidField`:idx:
      `system.html#149 <system.html#149>`_
 
@@ -1128,6 +1234,9 @@ Index
    `elementName`:idx:
      `parsexml.html#111 <parsexml.html#111>`_
 
+   `em`:idx:
+     `xmlgen.html#129 <xmlgen.html#129>`_
+
    `Embedded Nimrod Debugger`:idx:
      `endb.html#101 <endb.html#101>`_
 
@@ -1204,6 +1313,7 @@ Index
    `error`:idx:
      * `manual.html#221 <manual.html#221>`_
      * `manual.html#224 <manual.html#224>`_
+     * `macros.html#138 <macros.html#138>`_
 
    `errorMsg`:idx:
      `parsexml.html#120 <parsexml.html#120>`_
@@ -1230,6 +1340,9 @@ Index
    `ESystem`:idx:
      `system.html#136 <system.html#136>`_
 
+   `eventAttr`:idx:
+     `xmlgen.html#104 <xmlgen.html#104>`_
+
    `except`:idx:
      `manual.html#187 <manual.html#187>`_
 
@@ -1263,9 +1376,21 @@ Index
    `expandFilename`:idx:
      `os.html#116 <os.html#116>`_
 
+   `expectKind`:idx:
+     `macros.html#147 <macros.html#147>`_
+
+   `expectLen`:idx:
+     `macros.html#149 <macros.html#149>`_
+
+   `expectMinLen`:idx:
+     `macros.html#148 <macros.html#148>`_
+
    `exportc`:idx:
      `nimrodc.html#102 <nimrodc.html#102>`_
 
+   `expr`:idx:
+     `macros.html#111 <macros.html#111>`_
+
    `expression macros`:idx:
      `tut2.html#112 <tut2.html#112>`_
 
@@ -1293,6 +1418,9 @@ Index
    `fatal`:idx:
      `manual.html#225 <manual.html#225>`_
 
+   `fieldset`:idx:
+     `xmlgen.html#130 <xmlgen.html#130>`_
+
    `FIELD_TYPE_BIT`:idx:
      `mysql.html#231 <mysql.html#231>`_
 
@@ -1419,6 +1547,12 @@ Index
    `float64`:idx:
      `system.html#108 <system.html#108>`_
 
+   `floatVal`:idx:
+     `macros.html#124 <macros.html#124>`_
+
+   `floatVal=`:idx:
+     `macros.html#130 <macros.html#130>`_
+
    `FlushFile`:idx:
      `system.html#492 <system.html#492>`_
 
@@ -1426,6 +1560,9 @@ Index
      * `manual.html#203 <manual.html#203>`_
      * `tut1.html#105 <tut1.html#105>`_
 
+   `form`:idx:
+     `xmlgen.html#131 <xmlgen.html#131>`_
+
    `form feed`:idx:
      `manual.html#124 <manual.html#124>`_
 
@@ -1503,10 +1640,10 @@ Index
      `os.html#115 <os.html#115>`_
 
    `getContentLength`:idx:
-     `cgi.html#109 <cgi.html#109>`_
+     `cgi.html#110 <cgi.html#110>`_
 
    `getContentType`:idx:
-     `cgi.html#110 <cgi.html#110>`_
+     `cgi.html#111 <cgi.html#111>`_
 
    `getCurrentDir`:idx:
      `os.html#112 <os.html#112>`_
@@ -1521,7 +1658,7 @@ Index
      `times.html#111 <times.html#111>`_
 
    `getDocumentRoot`:idx:
-     `cgi.html#111 <cgi.html#111>`_
+     `cgi.html#112 <cgi.html#112>`_
 
    `getEnv`:idx:
      `os.html#143 <os.html#143>`_
@@ -1540,7 +1677,7 @@ Index
      `system.html#437 <system.html#437>`_
 
    `getGatewayInterface`:idx:
-     `cgi.html#112 <cgi.html#112>`_
+     `cgi.html#113 <cgi.html#113>`_
 
    `getGMTime`:idx:
      `times.html#107 <times.html#107>`_
@@ -1549,31 +1686,31 @@ Index
      `os.html#114 <os.html#114>`_
 
    `getHttpAccept`:idx:
-     `cgi.html#113 <cgi.html#113>`_
+     `cgi.html#114 <cgi.html#114>`_
 
    `getHttpAcceptCharset`:idx:
-     `cgi.html#114 <cgi.html#114>`_
+     `cgi.html#115 <cgi.html#115>`_
 
    `getHttpAcceptEncoding`:idx:
-     `cgi.html#115 <cgi.html#115>`_
+     `cgi.html#116 <cgi.html#116>`_
 
    `getHttpAcceptLanguage`:idx:
-     `cgi.html#116 <cgi.html#116>`_
+     `cgi.html#117 <cgi.html#117>`_
 
    `getHttpConnection`:idx:
-     `cgi.html#117 <cgi.html#117>`_
+     `cgi.html#118 <cgi.html#118>`_
 
    `getHttpCookie`:idx:
-     `cgi.html#118 <cgi.html#118>`_
+     `cgi.html#119 <cgi.html#119>`_
 
    `getHttpHost`:idx:
-     `cgi.html#119 <cgi.html#119>`_
+     `cgi.html#120 <cgi.html#120>`_
 
    `getHttpReferer`:idx:
-     `cgi.html#120 <cgi.html#120>`_
+     `cgi.html#121 <cgi.html#121>`_
 
    `getHttpUserAgent`:idx:
-     `cgi.html#121 <cgi.html#121>`_
+     `cgi.html#122 <cgi.html#122>`_
 
    `getLastModificationTime`:idx:
      `os.html#140 <os.html#140>`_
@@ -1595,37 +1732,37 @@ Index
      `parseopt.html#106 <parseopt.html#106>`_
 
    `getPathInfo`:idx:
-     `cgi.html#122 <cgi.html#122>`_
+     `cgi.html#123 <cgi.html#123>`_
 
    `getPathTranslated`:idx:
-     `cgi.html#123 <cgi.html#123>`_
+     `cgi.html#124 <cgi.html#124>`_
 
    `getQueryString`:idx:
-     `cgi.html#124 <cgi.html#124>`_
+     `cgi.html#125 <cgi.html#125>`_
 
    `getRefcount`:idx:
      `system.html#430 <system.html#430>`_
 
    `getRemoteAddr`:idx:
-     `cgi.html#125 <cgi.html#125>`_
+     `cgi.html#126 <cgi.html#126>`_
 
    `getRemoteHost`:idx:
-     `cgi.html#126 <cgi.html#126>`_
+     `cgi.html#127 <cgi.html#127>`_
 
    `getRemoteIdent`:idx:
-     `cgi.html#127 <cgi.html#127>`_
+     `cgi.html#128 <cgi.html#128>`_
 
    `getRemotePort`:idx:
-     `cgi.html#128 <cgi.html#128>`_
+     `cgi.html#129 <cgi.html#129>`_
 
    `getRemoteUser`:idx:
-     `cgi.html#129 <cgi.html#129>`_
+     `cgi.html#130 <cgi.html#130>`_
 
    `getRequestMethod`:idx:
-     `cgi.html#130 <cgi.html#130>`_
+     `cgi.html#131 <cgi.html#131>`_
 
    `getRequestURI`:idx:
-     `cgi.html#131 <cgi.html#131>`_
+     `cgi.html#132 <cgi.html#132>`_
 
    `getRestOfCommandLine`:idx:
      `parseopt.html#105 <parseopt.html#105>`_
@@ -1637,31 +1774,31 @@ Index
      `mysql.html#274 <mysql.html#274>`_
 
    `getScriptFilename`:idx:
-     `cgi.html#132 <cgi.html#132>`_
+     `cgi.html#133 <cgi.html#133>`_
 
    `getScriptName`:idx:
-     `cgi.html#133 <cgi.html#133>`_
+     `cgi.html#134 <cgi.html#134>`_
 
    `getServerAddr`:idx:
-     `cgi.html#134 <cgi.html#134>`_
+     `cgi.html#135 <cgi.html#135>`_
 
    `getServerAdmin`:idx:
-     `cgi.html#135 <cgi.html#135>`_
+     `cgi.html#136 <cgi.html#136>`_
 
    `getServerName`:idx:
-     `cgi.html#136 <cgi.html#136>`_
+     `cgi.html#137 <cgi.html#137>`_
 
    `getServerPort`:idx:
-     `cgi.html#137 <cgi.html#137>`_
+     `cgi.html#138 <cgi.html#138>`_
 
    `getServerProtocol`:idx:
-     `cgi.html#138 <cgi.html#138>`_
+     `cgi.html#139 <cgi.html#139>`_
 
    `getServerSignature`:idx:
-     `cgi.html#139 <cgi.html#139>`_
+     `cgi.html#140 <cgi.html#140>`_
 
    `getServerSoftware`:idx:
-     `cgi.html#140 <cgi.html#140>`_
+     `cgi.html#141 <cgi.html#141>`_
 
    `getStartMilsecs`:idx:
      `times.html#116 <times.html#116>`_
@@ -1684,6 +1821,24 @@ Index
    `GROUP_FLAG`:idx:
      `mysql.html#139 <mysql.html#139>`_
 
+   `h1`:idx:
+     `xmlgen.html#132 <xmlgen.html#132>`_
+
+   `h2`:idx:
+     `xmlgen.html#133 <xmlgen.html#133>`_
+
+   `h3`:idx:
+     `xmlgen.html#134 <xmlgen.html#134>`_
+
+   `h4`:idx:
+     `xmlgen.html#135 <xmlgen.html#135>`_
+
+   `h5`:idx:
+     `xmlgen.html#136 <xmlgen.html#136>`_
+
+   `h6`:idx:
+     `xmlgen.html#137 <xmlgen.html#137>`_
+
    `HandleCR`:idx:
      `lexbase.html#108 <lexbase.html#108>`_
 
@@ -1712,6 +1867,9 @@ Index
    `hasKey`:idx:
      `strtabs.html#108 <strtabs.html#108>`_
 
+   `head`:idx:
+     `xmlgen.html#138 <xmlgen.html#138>`_
+
    `header`:idx:
      `nimrodc.html#105 <nimrodc.html#105>`_
 
@@ -1721,6 +1879,7 @@ Index
    `hint`:idx:
      * `manual.html#219 <manual.html#219>`_
      * `manual.html#227 <manual.html#227>`_
+     * `macros.html#140 <macros.html#140>`_
 
    `hostCPU`:idx:
      `system.html#399 <system.html#399>`_
@@ -1731,8 +1890,15 @@ Index
    `hostOS`:idx:
      `system.html#398 <system.html#398>`_
 
+   `hr`:idx:
+     `xmlgen.html#140 <xmlgen.html#140>`_
+
+   `html`:idx:
+     `xmlgen.html#139 <xmlgen.html#139>`_
+
    `HTML`:idx:
-     `parsexml.html#102 <parsexml.html#102>`_
+     * `parsexml.html#102 <parsexml.html#102>`_
+     * `xmlgen.html#102 <xmlgen.html#102>`_
 
    `HTTPPOST_BUFFER`:idx:
      `libcurl.html#266 <libcurl.html#266>`_
@@ -1755,6 +1921,15 @@ Index
    `hypot`:idx:
      `math.html#128 <math.html#128>`_
 
+   `i`:idx:
+     `xmlgen.html#141 <xmlgen.html#141>`_
+
+   `ident`:idx:
+     `macros.html#126 <macros.html#126>`_
+
+   `ident=`:idx:
+     `macros.html#132 <macros.html#132>`_
+
    `IdentChars`:idx:
      `strutils.html#105 <strutils.html#105>`_
 
@@ -1770,6 +1945,9 @@ Index
    `if`:idx:
      `manual.html#180 <manual.html#180>`_
 
+   `img`:idx:
+     `xmlgen.html#142 <xmlgen.html#142>`_
+
    `implicit block`:idx:
      `manual.html#205 <manual.html#205>`_
 
@@ -1808,6 +1986,12 @@ Index
    `inline`:idx:
      `manual.html#167 <manual.html#167>`_
 
+   `input`:idx:
+     `xmlgen.html#143 <xmlgen.html#143>`_
+
+   `ins`:idx:
+     `xmlgen.html#144 <xmlgen.html#144>`_
+
    `int`:idx:
      `system.html#101 <system.html#101>`_
 
@@ -1829,6 +2013,12 @@ Index
    `intToStr`:idx:
      `strutils.html#143 <strutils.html#143>`_
 
+   `intVal`:idx:
+     `macros.html#123 <macros.html#123>`_
+
+   `intVal=`:idx:
+     `macros.html#129 <macros.html#129>`_
+
    `is`:idx:
      `system.html#357 <system.html#357>`_
 
@@ -1903,15 +2093,25 @@ Index
      * `os.html#118 <os.html#118>`_
      * `os.html#120 <os.html#120>`_
 
+   `kbd`:idx:
+     `xmlgen.html#145 <xmlgen.html#145>`_
+
    `keywords`:idx:
      `manual.html#117 <manual.html#117>`_
 
    `kind`:idx:
-     `parsexml.html#110 <parsexml.html#110>`_
+     * `parsexml.html#110 <parsexml.html#110>`_
+     * `macros.html#122 <macros.html#122>`_
 
    `l-values`:idx:
      `manual.html#107 <manual.html#107>`_
 
+   `label`:idx:
+     `xmlgen.html#146 <xmlgen.html#146>`_
+
+   `legend`:idx:
+     `xmlgen.html#147 <xmlgen.html#147>`_
+
    `len`:idx:
      * `system.html#162 <system.html#162>`_
      * `system.html#163 <system.html#163>`_
@@ -1919,10 +2119,14 @@ Index
      * `system.html#165 <system.html#165>`_
      * `system.html#166 <system.html#166>`_
      * `strtabs.html#109 <strtabs.html#109>`_
+     * `macros.html#118 <macros.html#118>`_
 
    `Letters`:idx:
      `strutils.html#103 <strutils.html#103>`_
 
+   `li`:idx:
+     `xmlgen.html#148 <xmlgen.html#148>`_
+
    `LIBCURL_VERSION`:idx:
      `libcurl.html#272 <libcurl.html#272>`_
 
@@ -1950,6 +2154,9 @@ Index
    `line_trace`:idx:
      `nimrodc.html#109 <nimrodc.html#109>`_
 
+   `link`:idx:
+     `xmlgen.html#149 <xmlgen.html#149>`_
+
    `Literal strings`:idx:
      `manual.html#119 <manual.html#119>`_
 
@@ -2014,6 +2221,9 @@ Index
    `MANAGER_OK`:idx:
      `mysql.html#334 <mysql.html#334>`_
 
+   `map`:idx:
+     `xmlgen.html#150 <xmlgen.html#150>`_
+
    `match`:idx:
      * `regexprs.html#106 <regexprs.html#106>`_
      * `regexprs.html#107 <regexprs.html#107>`_
@@ -2083,6 +2293,9 @@ Index
    `MEM_ROOT`:idx:
      `mysql.html#325 <mysql.html#325>`_
 
+   `meta`:idx:
+     `xmlgen.html#151 <xmlgen.html#151>`_
+
    `method call syntax`:idx:
      `tut2.html#104 <tut2.html#104>`_
 
@@ -2643,6 +2856,9 @@ Index
    `neginf`:idx:
      `system.html#433 <system.html#433>`_
 
+   `nestList`:idx:
+     `macros.html#152 <macros.html#152>`_
+
    `NET`:idx:
      `mysql.html#199 <mysql.html#199>`_
 
@@ -2686,16 +2902,33 @@ Index
      * `system.html#119 <system.html#119>`_
      * `system.html#120 <system.html#120>`_
 
+   `newCall`:idx:
+     * `macros.html#150 <macros.html#150>`_
+     * `macros.html#151 <macros.html#151>`_
+
    `newFileStream`:idx:
      * `streams.html#120 <streams.html#120>`_
      * `streams.html#121 <streams.html#121>`_
 
+   `newFloatLitNode`:idx:
+     `macros.html#143 <macros.html#143>`_
+
+   `newIdentNode`:idx:
+     * `macros.html#144 <macros.html#144>`_
+     * `macros.html#145 <macros.html#145>`_
+
+   `newIntLitNode`:idx:
+     `macros.html#142 <macros.html#142>`_
+
    `newline`:idx:
      `manual.html#121 <manual.html#121>`_
 
    `NewLines`:idx:
      `lexbase.html#102 <lexbase.html#102>`_
 
+   `newNimNode`:idx:
+     `macros.html#135 <macros.html#135>`_
+
    `newSeq`:idx:
      `system.html#161 <system.html#161>`_
 
@@ -2709,6 +2942,9 @@ Index
      * `strtabs.html#104 <strtabs.html#104>`_
      * `strtabs.html#105 <strtabs.html#105>`_
 
+   `newStrLitNode`:idx:
+     `macros.html#141 <macros.html#141>`_
+
    `next`:idx:
      * `parseopt.html#104 <parseopt.html#104>`_
      * `parsecfg.html#106 <parsecfg.html#106>`_
@@ -2747,6 +2983,9 @@ Index
    `normalize`:idx:
      `strutils.html#120 <strutils.html#120>`_
 
+   `noscript`:idx:
+     `xmlgen.html#152 <xmlgen.html#152>`_
+
    `not`:idx:
      * `system.html#115 <system.html#115>`_
      * `system.html#191 <system.html#191>`_
@@ -2771,11 +3010,15 @@ Index
      `mysql.html#137 <mysql.html#137>`_
 
    `object`:idx:
-     `manual.html#155 <manual.html#155>`_
+     * `manual.html#155 <manual.html#155>`_
+     * `xmlgen.html#153 <xmlgen.html#153>`_
 
    `octet2hex`:idx:
      `mysql.html#276 <mysql.html#276>`_
 
+   `ol`:idx:
+     `xmlgen.html#154 <xmlgen.html#154>`_
+
    `ONLY_KILL_QUERY`:idx:
      `mysql.html#189 <mysql.html#189>`_
 
@@ -2783,6 +3026,7 @@ Index
      * `lexbase.html#104 <lexbase.html#104>`_
      * `parsecfg.html#104 <parsecfg.html#104>`_
      * `parsexml.html#107 <parsexml.html#107>`_
+     * `parsecsv.html#106 <parsecsv.html#106>`_
      * `zipfiles.html#102 <zipfiles.html#102>`_
 
    `openarray`:idx:
@@ -2799,6 +3043,12 @@ Index
    `Operators`:idx:
      `manual.html#202 <manual.html#202>`_
 
+   `optgroup`:idx:
+     `xmlgen.html#155 <xmlgen.html#155>`_
+
+   `option`:idx:
+     `xmlgen.html#156 <xmlgen.html#156>`_
+
    `or`:idx:
      * `system.html#117 <system.html#117>`_
      * `system.html#236 <system.html#236>`_
@@ -2819,12 +3069,18 @@ Index
    `OSError`:idx:
      `os.html#147 <os.html#147>`_
 
+   `p`:idx:
+     `xmlgen.html#157 <xmlgen.html#157>`_
+
    `packet_error`:idx:
      `mysql.html#201 <mysql.html#201>`_
 
    `pairs`:idx:
      `strtabs.html#110 <strtabs.html#110>`_
 
+   `param`:idx:
+     `xmlgen.html#158 <xmlgen.html#158>`_
+
    `paramCount`:idx:
      `os.html#145 <os.html#145>`_
 
@@ -3062,6 +3318,15 @@ Index
    `PNET`:idx:
      `mysql.html#200 <mysql.html#200>`_
 
+   `PNimrodNode`:idx:
+     `macros.html#110 <macros.html#110>`_
+
+   `PNimrodSymbol`:idx:
+     `macros.html#109 <macros.html#109>`_
+
+   `PNimrodType`:idx:
+     `macros.html#108 <macros.html#108>`_
+
    `PObject`:idx:
      `system.html#132 <system.html#132>`_
 
@@ -3102,6 +3367,9 @@ Index
    `Prand_struct`:idx:
      `mysql.html#253 <mysql.html#253>`_
 
+   `pre`:idx:
+     `xmlgen.html#159 <xmlgen.html#159>`_
+
    `pred`:idx:
      `system.html#158 <system.html#158>`_
 
@@ -3115,6 +3383,9 @@ Index
    `procedures`:idx:
      `manual.html#199 <manual.html#199>`_
 
+   `processedRows`:idx:
+     `parsecsv.html#107 <parsecsv.html#107>`_
+
    `Psockaddr`:idx:
      `mysql.html#250 <mysql.html#250>`_
 
@@ -3199,6 +3470,9 @@ Index
    `PUSED_MEM`:idx:
      `mysql.html#322 <mysql.html#322>`_
 
+   `push`:idx:
+     `math.html#134 <math.html#134>`_
+
    `push/pop`:idx:
      `manual.html#228 <manual.html#228>`_
 
@@ -3211,6 +3485,9 @@ Index
    `PZipFileStream`:idx:
      `zipfiles.html#108 <zipfiles.html#108>`_
 
+   `q`:idx:
+     `xmlgen.html#160 <xmlgen.html#160>`_
+
    `quit`:idx:
      * `system.html#479 <system.html#479>`_
      * `system.html#480 <system.html#480>`_
@@ -3262,7 +3539,7 @@ Index
      `system.html#506 <system.html#506>`_
 
    `readData`:idx:
-     `cgi.html#107 <cgi.html#107>`_
+     `cgi.html#108 <cgi.html#108>`_
 
    `readFile`:idx:
      `system.html#493 <system.html#493>`_
@@ -3289,6 +3566,9 @@ Index
      * `system.html#501 <system.html#501>`_
      * `streams.html#114 <streams.html#114>`_
 
+   `readRow`:idx:
+     `parsecsv.html#108 <parsecsv.html#108>`_
+
    `readStr`:idx:
      `streams.html#113 <streams.html#113>`_
 
@@ -3420,6 +3700,9 @@ Index
    `sameFileContent`:idx:
      `os.html#149 <os.html#149>`_
 
+   `samp`:idx:
+     `xmlgen.html#161 <xmlgen.html#161>`_
+
    `scope`:idx:
      * `manual.html#106 <manual.html#106>`_
      * `manual.html#217 <manual.html#217>`_
@@ -3442,9 +3725,15 @@ Index
    `SCRAMBLE_LENGTH_323`:idx:
      `mysql.html#121 <mysql.html#121>`_
 
+   `script`:idx:
+     `xmlgen.html#162 <xmlgen.html#162>`_
+
    `ScriptExt`:idx:
      `os.html#108 <os.html#108>`_
 
+   `select`:idx:
+     `xmlgen.html#163 <xmlgen.html#163>`_
+
    `separate compilation`:idx:
      * `manual.html#214 <manual.html#214>`_
      * `tut1.html#127 <tut1.html#127>`_
@@ -3528,7 +3817,7 @@ Index
      * `system.html#417 <system.html#417>`_
 
    `setTestData`:idx:
-     `cgi.html#141 <cgi.html#141>`_
+     `cgi.html#142 <cgi.html#142>`_
 
    `shl`:idx:
      * `system.html#226 <system.html#226>`_
@@ -3556,9 +3845,15 @@ Index
    `sizeof`:idx:
      `system.html#156 <system.html#156>`_
 
+   `small`:idx:
+     `xmlgen.html#164 <xmlgen.html#164>`_
+
    `sockaddr`:idx:
      `mysql.html#251 <mysql.html#251>`_
 
+   `span`:idx:
+     `xmlgen.html#165 <xmlgen.html#165>`_
+
    `split`:idx:
      * `strutils.html#131 <strutils.html#131>`_
      * `strutils.html#132 <strutils.html#132>`_
@@ -4084,6 +4379,9 @@ Index
    `stack_trace`:idx:
      `nimrodc.html#108 <nimrodc.html#108>`_
 
+   `standardDeviation`:idx:
+     `math.html#136 <math.html#136>`_
+
    `startsWith`:idx:
      `strutils.html#149 <strutils.html#149>`_
 
@@ -4117,6 +4415,9 @@ Index
    `st_mem_root`:idx:
      `mysql.html#324 <mysql.html#324>`_
 
+   `stmt`:idx:
+     `macros.html#112 <macros.html#112>`_
+
    `st_mysql`:idx:
      `mysql.html#356 <mysql.html#356>`_
 
@@ -4163,6 +4464,9 @@ Index
    `strip`:idx:
      `strutils.html#114 <strutils.html#114>`_
 
+   `strong`:idx:
+     `xmlgen.html#166 <xmlgen.html#166>`_
+
    `strStart`:idx:
      `strutils.html#107 <strutils.html#107>`_
 
@@ -4172,6 +4476,12 @@ Index
    `strutils`:idx:
      `nimrodc.html#117 <nimrodc.html#117>`_
 
+   `strVal`:idx:
+     `macros.html#128 <macros.html#128>`_
+
+   `strVal=`:idx:
+     `macros.html#134 <macros.html#134>`_
+
    `st_udf_args`:idx:
      `mysql.html#258 <mysql.html#258>`_
 
@@ -4181,9 +4491,15 @@ Index
    `st_used_mem`:idx:
      `mysql.html#320 <mysql.html#320>`_
 
+   `style`:idx:
+     `xmlgen.html#167 <xmlgen.html#167>`_
+
    `style-insensitive`:idx:
      `manual.html#118 <manual.html#118>`_
 
+   `sub`:idx:
+     `xmlgen.html#168 <xmlgen.html#168>`_
+
    `subrange`:idx:
      * `manual.html#149 <manual.html#149>`_
      * `tut1.html#115 <tut1.html#115>`_
@@ -4197,15 +4513,27 @@ Index
    `sum`:idx:
      `math.html#110 <math.html#110>`_
 
+   `sup`:idx:
+     `xmlgen.html#169 <xmlgen.html#169>`_
+
    `swap`:idx:
      `system.html#419 <system.html#419>`_
 
+   `symbol`:idx:
+     `macros.html#125 <macros.html#125>`_
+
+   `symbol=`:idx:
+     `macros.html#131 <macros.html#131>`_
+
    `syscall`:idx:
      `manual.html#171 <manual.html#171>`_
 
    `system`:idx:
      `manual.html#218 <manual.html#218>`_
 
+   `table`:idx:
+     `xmlgen.html#170 <xmlgen.html#170>`_
+
    `tabulator`:idx:
      `manual.html#125 <manual.html#125>`_
 
@@ -4227,6 +4555,9 @@ Index
    `Tbind_destructor_func`:idx:
      `sqlite3.html#183 <sqlite3.html#183>`_
 
+   `tbody`:idx:
+     `xmlgen.html#171 <xmlgen.html#171>`_
+
    `TCfgEvent`:idx:
      `parsecfg.html#102 <parsecfg.html#102>`_
 
@@ -4254,6 +4585,12 @@ Index
    `Tcreate_function_step_func`:idx:
      `sqlite3.html#184 <sqlite3.html#184>`_
 
+   `TCsvParser`:idx:
+     `parsecsv.html#104 <parsecsv.html#104>`_
+
+   `TCsvRow`:idx:
+     `parsecsv.html#103 <parsecsv.html#103>`_
+
    `TCurl`:idx:
      `libcurl.html#140 <libcurl.html#140>`_
 
@@ -4407,12 +4744,18 @@ Index
    `Tcurl_write_callback`:idx:
      `libcurl.html#143 <libcurl.html#143>`_
 
+   `td`:idx:
+     `xmlgen.html#172 <xmlgen.html#172>`_
+
    `template`:idx:
      `manual.html#209 <manual.html#209>`_
 
    `TEndian`:idx:
      `system.html#385 <system.html#385>`_
 
+   `textarea`:idx:
+     `xmlgen.html#173 <xmlgen.html#173>`_
+
    `TFile`:idx:
      `system.html#481 <system.html#481>`_
 
@@ -4428,6 +4771,9 @@ Index
    `TFloatClass`:idx:
      `math.html#103 <math.html#103>`_
 
+   `tfoot`:idx:
+     `xmlgen.html#174 <xmlgen.html#174>`_
+
    `TForegroundColor`:idx:
      `terminal.html#113 <terminal.html#113>`_
 
@@ -4437,9 +4783,15 @@ Index
    `TGC_Strategy`:idx:
      `system.html#464 <system.html#464>`_
 
+   `th`:idx:
+     `xmlgen.html#175 <xmlgen.html#175>`_
+
    `THash`:idx:
      `hashes.html#101 <hashes.html#101>`_
 
+   `thead`:idx:
+     `xmlgen.html#176 <xmlgen.html#176>`_
+
    `TimeInfoToTime`:idx:
      `times.html#108 <times.html#108>`_
 
@@ -4449,9 +4801,30 @@ Index
    `TIMESTAMP_FLAG`:idx:
      `mysql.html#134 <mysql.html#134>`_
 
+   `title`:idx:
+     `xmlgen.html#177 <xmlgen.html#177>`_
+
    `TMonth`:idx:
      `times.html#101 <times.html#101>`_
 
+   `TNimNodeKinds`:idx:
+     `macros.html#103 <macros.html#103>`_
+
+   `TNimrodNodeKind`:idx:
+     `macros.html#102 <macros.html#102>`_
+
+   `TNimrodSymKind`:idx:
+     `macros.html#106 <macros.html#106>`_
+
+   `TNimrodTypeKind`:idx:
+     `macros.html#104 <macros.html#104>`_
+
+   `TNimSymKinds`:idx:
+     `macros.html#107 <macros.html#107>`_
+
+   `TNimTypeKinds`:idx:
+     `macros.html#105 <macros.html#105>`_
+
    `toBiggestFloat`:idx:
      `system.html#401 <system.html#401>`_
 
@@ -4490,6 +4863,9 @@ Index
    `toString`:idx:
      `strutils.html#147 <strutils.html#147>`_
 
+   `toStrLit`:idx:
+     `macros.html#146 <macros.html#146>`_
+
    `toTitle`:idx:
      `unicode.html#108 <unicode.html#108>`_
 
@@ -4513,6 +4889,9 @@ Index
    `TPathComponent`:idx:
      `os.html#152 <os.html#152>`_
 
+   `tr`:idx:
+     `xmlgen.html#178 <xmlgen.html#178>`_
+
    `traced`:idx:
      * `manual.html#159 <manual.html#159>`_
      * `tut1.html#121 <tut1.html#121>`_
@@ -4529,6 +4908,9 @@ Index
    `TRune16`:idx:
      `unicode.html#102 <unicode.html#102>`_
 
+   `TRunningStat`:idx:
+     `math.html#133 <math.html#133>`_
+
    `try`:idx:
      * `manual.html#185 <manual.html#185>`_
      * `tut2.html#107 <tut2.html#107>`_
@@ -4560,6 +4942,9 @@ Index
    `TStyle`:idx:
      `terminal.html#111 <terminal.html#111>`_
 
+   `tt`:idx:
+     `xmlgen.html#179 <xmlgen.html#179>`_
+
    `TTime`:idx:
      `times.html#103 <times.html#103>`_
 
@@ -4584,6 +4969,12 @@ Index
    `TXmlParser`:idx:
      `parsexml.html#106 <parsexml.html#106>`_
 
+   `typ`:idx:
+     `macros.html#127 <macros.html#127>`_
+
+   `typ=`:idx:
+     `macros.html#133 <macros.html#133>`_
+
    `type`:idx:
      * `manual.html#102 <manual.html#102>`_
      * `manual.html#140 <manual.html#140>`_
@@ -4611,6 +5002,9 @@ Index
    `UDF_INIT`:idx:
      `mysql.html#263 <mysql.html#263>`_
 
+   `ul`:idx:
+     `xmlgen.html#180 <xmlgen.html#180>`_
+
    `unchecked runtime error`:idx:
      `manual.html#111 <manual.html#111>`_
 
@@ -4660,11 +5054,17 @@ Index
      `mysql.html#112 <mysql.html#112>`_
 
    `validateData`:idx:
-     `cgi.html#108 <cgi.html#108>`_
+     `cgi.html#109 <cgi.html#109>`_
 
    `validEmailAddress`:idx:
      `strutils.html#157 <strutils.html#157>`_
 
+   `validIdentifier`:idx:
+     `strutils.html#158 <strutils.html#158>`_
+
+   `var`:idx:
+     `xmlgen.html#181 <xmlgen.html#181>`_
+
    `Var`:idx:
      `manual.html#178 <manual.html#178>`_
 
@@ -4672,7 +5072,8 @@ Index
      `nimrodc.html#106 <nimrodc.html#106>`_
 
    `variance`:idx:
-     `math.html#112 <math.html#112>`_
+     * `math.html#112 <math.html#112>`_
+     * `math.html#135 <math.html#135>`_
 
    `variant`:idx:
      * `manual.html#156 <manual.html#156>`_
@@ -4694,6 +5095,7 @@ Index
    `warning`:idx:
      * `manual.html#220 <manual.html#220>`_
      * `manual.html#226 <manual.html#226>`_
+     * `macros.html#139 <macros.html#139>`_
 
    `when`:idx:
      * `manual.html#182 <manual.html#182>`_
@@ -4726,7 +5128,7 @@ Index
      `system.html#509 <system.html#509>`_
 
    `writeContentType`:idx:
-     `cgi.html#142 <cgi.html#142>`_
+     `cgi.html#143 <cgi.html#143>`_
 
    `writeln`:idx:
      * `system.html#502 <system.html#502>`_
@@ -4736,7 +5138,11 @@ Index
      `terminal.html#112 <terminal.html#112>`_
 
    `XML`:idx:
-     `parsexml.html#101 <parsexml.html#101>`_
+     * `parsexml.html#101 <parsexml.html#101>`_
+     * `xmlgen.html#101 <xmlgen.html#101>`_
+
+   `xmlCheckedTag`:idx:
+     `xmlgen.html#106 <xmlgen.html#106>`_
 
    `XMLencode`:idx:
      `cgi.html#103 <cgi.html#103>`_
diff --git a/doc/tut2.txt b/doc/tut2.txt
index 0bea28a8f..6d2fd3094 100644
--- a/doc/tut2.txt
+++ b/doc/tut2.txt
@@ -396,7 +396,7 @@ is not executed (if an exception occurs).
 Generics
 ========
 
-`Version 0.7.6: Complex generic types like in the example do not work.`:red:
+`Version 0.7.8: Complex generic types like in the example do not work.`:red:
 
 `Generics`:idx: are Nimrod's means to parametrize procs, iterators or types 
 with `type parameters`:idx:. They are most useful for efficient type safe
@@ -596,7 +596,8 @@ Nimrod's syntax is flexible enough anyway.
 `Macros`:idx: can be used to implement `domain specific languages`:idx:. 
 
 To write macros, one needs to know how the Nimrod concrete syntax is converted
-to an abstract syntax tree (AST). (Unfortunately the AST is not documented yet.)
+to an abstract syntax tree (AST). The AST is documented in the 
+`macros <macros.html>`_ module.
 
 There are two ways to invoke a macro:
 (1) invoking a macro like a procedure call (`expression macros`:idx:)