Ilya Zakharevich on Thu, 21 Sep 2000 23:05:58 -0400 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
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 -your file. +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) addhelp(gpname, "some help text") @eprog \noindent(see \secref{se:addhelp} and~\ref{se:install}). The \idx{addhelp} 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. Read that file from your GP session (from your \idx{preferences file} for 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.