Ilya Zakharevich on Thu, 21 Sep 2000 23:05:58 -0400

 PATCH: better documentation of the parser code

This updates the documentation of the parser codes.

Ilya

--- ../pari-my/doc/usersch4.tex	Mon Dec 13 14:41:01 1999
+++ ./doc/usersch4.tex	Thu Sep 21 22:57:08 2000
@@ -2079,7 +2078,7 @@ don't use the resulting \kbd{long}\cr
global variable \kbd{precdl} for the library)\cr

\noindent $\bullet$ Return type: \kbd{GEN} by default, otherwise the
-following can appear anywhere in the code string:
+following can appear at the start of the code string:
%
\+& \kbd{l} & return \kbd{long}\cr
\+& \kbd{v} & return \kbd{void}\cr
@@ -2104,7 +2103,7 @@ don't involve default values):
GEN name(GEN x, GEN y, long prec)   ----> "GGp"
void name(GEN x, GEN y, long prec)  ----> "vGGp"
void name(GEN x, long y, long prec) ----> "vGLp"
-long name(GEN x)                    ----> "Gl"
+long name(GEN x)                    ----> "lG"
@eprog

If you want more examples, GP gives you easy access to the parser codes
@@ -2140,9 +2139,11 @@ a \kbd{longjmp} statement. As well, inst
\fun{void}{fprintferr}{char *s}: write \kbd{s} to the GP error stream (this
function is in fact much more versatile, see \secref{se:dbg_output}).

-Declare all public functions in \kbd{paridecl.h} (you want the outside
-world to know about them). The other ones should be declared \kbd{static} in
+Declare all public functions in an appropriate header file, if you
+expect somebody will access them from C.  For example, if dynamic
+loading is not available, you may need to modify PARI to access these
+functions, so put them in \kbd{paridecl.h}. The other functions should
+be declared \kbd{static} in your file.

Your function is now ready to be used in library mode after compilation and
creation of the library. If possible, compile it as a shared library (see
@@ -2165,12 +2166,13 @@ Now, assuming your Operating System is s
write a GP script like the following:

\bprog
-install(name, code, gpname, library)
+install(libname, code, gpname, library)
@eprog
part is not mandatory, but very useful if you want others to use your
-module.
+module.  \kbd{libname} is how the function is named in the library,
+usually the same name as one visible from C.

instance, see \secref{se:gprc}), and that's it, you can use the new
@@ -2199,9 +2201,12 @@ come before letters), in a line of the f
\kbd{secno} is the section number of Chapter~3 in which this function would
belong (type \kbd{?} in GP to see the list),

-\kbd{V} is a number between 0 and 99. Right now, there are only two
+\kbd{V} is a number between 0 and 99. Right now, for PARI there are only two
significant values: zero means that it's possible to call the function
without argument, and non-zero means it needs at least one argument.
+A binding of PARI to an external language (such as \kbd{Math::Pari}
+Perl module) may actually distinguish between different non-zero values.
+Better use 99 if you want a non-zero value which will not confuse anybody.

\kbd{code} is the parser code.