|
|
@ -1,8 +1,10 @@ |
|
|
|
% $Id: manual.tex,v 1.16 1998/06/19 18:47:06 roberto Exp roberto $ |
|
|
|
% $Id: manual.tex,v 1.17 1998/06/29 18:09:28 roberto Exp roberto $ |
|
|
|
|
|
|
|
\documentclass[11pt]{article} |
|
|
|
\usepackage{fullpage,bnf} |
|
|
|
|
|
|
|
\catcode`\_=12 |
|
|
|
|
|
|
|
\newcommand{\See}[1]{Section~\ref{#1}} |
|
|
|
\newcommand{\see}[1]{(see \See{#1})} |
|
|
|
\newcommand{\M}[1]{\emph{#1}} |
|
|
@ -19,7 +21,7 @@ |
|
|
|
|
|
|
|
\newcommand{\ff}{$\bullet$\ } |
|
|
|
|
|
|
|
\newcommand{\Version}{3.1} |
|
|
|
\newcommand{\Version}{3.2 (alpha)} |
|
|
|
|
|
|
|
\makeindex |
|
|
|
|
|
|
@ -39,7 +41,7 @@ Waldemar Celes |
|
|
|
\tecgraf\ --- Computer Science Department --- PUC-Rio |
|
|
|
} |
|
|
|
|
|
|
|
%\date{\small \verb$Date: 1998/06/19 18:47:06 $} |
|
|
|
%\date{\small \verb$Date: 1998/06/29 18:09:28 $} |
|
|
|
|
|
|
|
\maketitle |
|
|
|
|
|
|
@ -810,7 +812,7 @@ If the function is called in a place that can hold many values |
|
|
|
(syntactically denoted by the non-terminal \M{exp}), |
|
|
|
then no adjustment is made. |
|
|
|
Note that the only place that can hold many values |
|
|
|
is the last expression (or the only one) in an assignment |
|
|
|
is the last (or the only) expression in an assignment |
|
|
|
or in a return statement; see examples below. |
|
|
|
\begin{verbatim} |
|
|
|
f(); -- adjusted to 0 |
|
|
@ -1263,22 +1265,20 @@ Because Lua is an extension language, |
|
|
|
all Lua actions start from C code in the host program |
|
|
|
calling a function from the Lua library. |
|
|
|
Whenever an error occurs during Lua compilation or execution, |
|
|
|
the \Def{error method} is called, |
|
|
|
function \verb|_ERRORMESSAGE| is called \Deffunc{_ERRORMESSAGE} |
|
|
|
(provided it is different from \nil), |
|
|
|
and then the corresponding function from the library |
|
|
|
(\verb|lua_dofile|, \verb|lua_dostring|, |
|
|
|
\verb|lua_dobuffer|, or \verb|lua_callfunction|) |
|
|
|
is terminated, returning an error condition. |
|
|
|
|
|
|
|
The only argument to the error method is a string |
|
|
|
The only argument to \verb|_ERRORMESSAGE| is a string |
|
|
|
describing the error. |
|
|
|
The default method prints this message to \verb|stderr|. |
|
|
|
If needed, it is possible to change the error method with the |
|
|
|
function \verb|seterrormethod|, |
|
|
|
which gets the new error handler as its only parameter |
|
|
|
\see{pdf-seterrormethod}. |
|
|
|
The standard I/O library uses this facility to redefine the error method, |
|
|
|
using the debug facilities \see{debugI}, |
|
|
|
in order to print some extra information, |
|
|
|
The default definition for this function calls \verb|_ALERT|, |
|
|
|
which prints the message to \verb|stderr| \see{alert}. |
|
|
|
The standard I/O library redefines \verb|_ERRORMESSAGE|, |
|
|
|
and uses the debug facilities \see{debugI} |
|
|
|
to print some extra information, |
|
|
|
such as the call stack. |
|
|
|
|
|
|
|
To provide more information about errors, |
|
|
@ -1347,11 +1347,11 @@ For that, you must set \verb|lua_state| back to \verb|NULL| before |
|
|
|
calling \verb|lua_open|. |
|
|
|
An easy way to do that is defining an auxiliary function: |
|
|
|
\begin{verbatim} |
|
|
|
lua_State *lua_newstate (void) { |
|
|
|
lua_State *old = lua_setstate(NULL); |
|
|
|
lua_open(); |
|
|
|
return lua_setstate(old); |
|
|
|
} |
|
|
|
lua_State *lua_newstate (void) { |
|
|
|
lua_State *old = lua_setstate(NULL); |
|
|
|
lua_open(); |
|
|
|
return lua_setstate(old); |
|
|
|
} |
|
|
|
\end{verbatim} |
|
|
|
This function creates a new state without changing the current state |
|
|
|
of the interpreter. |
|
|
@ -1373,14 +1373,14 @@ If \verb|lua_state| is already \verb|NULL|, |
|
|
|
\verb|lua_close| has no effect. |
|
|
|
|
|
|
|
If you are using multiple states, |
|
|
|
you may find useful the following function, |
|
|
|
you may find useful to define the following function, |
|
|
|
which releases a given state: |
|
|
|
\begin{verbatim} |
|
|
|
void lua_freestate (lua_State *st) { |
|
|
|
lua_State *old = lua_setstate(st); |
|
|
|
lua_close(); |
|
|
|
if (old != st) lua_setstate(old); |
|
|
|
} |
|
|
|
void lua_freestate (lua_State *st) { |
|
|
|
lua_State *old = lua_setstate(st); |
|
|
|
lua_close(); |
|
|
|
if (old != st) lua_setstate(old); |
|
|
|
} |
|
|
|
\end{verbatim} |
|
|
|
|
|
|
|
\subsection{Exchanging Values between C and Lua} \label{valuesCLua} |
|
|
@ -1736,18 +1736,10 @@ If the C function has been called from Lua, |
|
|
|
then the corresponding Lua execution terminates, |
|
|
|
as if an error had occurred inside Lua code. |
|
|
|
Otherwise, the whole program terminates with a call to \verb|exit(1)|. |
|
|
|
The \verb|message| is passed to the error handler method. |
|
|
|
The \verb|message| is passed to the error handler function, |
|
|
|
\verb|_ERRORMESSAGE|. |
|
|
|
If \verb|message| is \verb|NULL|, |
|
|
|
the error handler method is not called. |
|
|
|
|
|
|
|
The error handler method \see{error} can be |
|
|
|
changed with: \Deffunc{lua_seterrormethod} |
|
|
|
\begin{verbatim} |
|
|
|
lua_Object lua_seterrormethod (void); |
|
|
|
\end{verbatim} |
|
|
|
This function sets the object at the top of C2lua |
|
|
|
as the new error method, |
|
|
|
and returns the old error method value. |
|
|
|
\verb|_ERRORMESSAGE| is not called. |
|
|
|
|
|
|
|
Tag methods can be changed with: \Deffunc{lua_settagmethod} |
|
|
|
\begin{verbatim} |
|
|
@ -1885,7 +1877,7 @@ and \verb|lua_iolibopen|, declared in \verb|lualib.h|. |
|
|
|
|
|
|
|
\subsection{Predefined Functions} \label{predefined} |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{call (func, arg [, mode [, errmethod]])}}\Deffunc{call} |
|
|
|
\subsubsection*{\ff \T{call (func, arg [, mode [, errhandler]])}}\Deffunc{call} |
|
|
|
\label{pdf-call} |
|
|
|
This function calls function \verb|func| with |
|
|
|
the arguments given by the table \verb|arg|. |
|
|
@ -1917,14 +1909,15 @@ if an error occurs during the function call, |
|
|
|
the error is propagated. |
|
|
|
If the string \verb|mode| contains \verb|"x"|, |
|
|
|
then the call is \emph{protected}.\index{protected calls} |
|
|
|
In this mode, function \verb|call| does not generate an error, |
|
|
|
In this mode, function \verb|call| does not propagate an error, |
|
|
|
whatever happens during the call. |
|
|
|
Instead, it returns \nil\ to signal the error |
|
|
|
(besides calling the appropriated error method). |
|
|
|
(besides calling the appropriated error handler). |
|
|
|
|
|
|
|
If provided, \verb|errmethod| is temporarily set as the error method, |
|
|
|
while \verb|func| runs. |
|
|
|
As a particular case, if \verb|errmethod| is \nil, |
|
|
|
If provided, |
|
|
|
\verb|errhandler| is temporarily set as the error function |
|
|
|
\verb|_ERRORMESSAGE|, while \verb|func| runs. |
|
|
|
As a particular example, if \verb|errhandler| is \nil, |
|
|
|
no error messages will be issued during the execution of the called function. |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{collectgarbage ([limit])}}\Deffunc{collectgarbage} |
|
|
@ -2055,9 +2048,16 @@ This function receives any number of arguments, |
|
|
|
and prints their values using the strings returned by \verb|tostring|. |
|
|
|
This function is not intended for formatted output, |
|
|
|
but only as a quick way to show a value, |
|
|
|
for instance for error messages or debugging. |
|
|
|
for instance for debugging. |
|
|
|
See \See{libio} for functions for formatted output. |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{_ALERT (message)}}\Deffunc{alert}\label{alert} |
|
|
|
This function prints its only string argument to \IndexVerb{stderr}. |
|
|
|
All error messages in Lua are printed through this function. |
|
|
|
Therefore, a program may redefine it |
|
|
|
to change the way such messages are shown |
|
|
|
(for instance, for systems without \verb|stderr|). |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{tonumber (e [, base])}}\Deffunc{tonumber} |
|
|
|
This function receives one argument, |
|
|
|
and tries to convert it to a number. |
|
|
@ -2164,13 +2164,6 @@ Its full semantics is explained in \See{tag-method}. |
|
|
|
The string \verb|name| does not need to be a |
|
|
|
syntactically valid variable name. |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{seterrormethod (newmethod)}} |
|
|
|
\label{pdf-seterrormethod} |
|
|
|
Sets the error handler \see{error}. |
|
|
|
\verb|newmethod| must be a function or \nil, |
|
|
|
in which case the error handler does nothing. |
|
|
|
Returns the old error handler. |
|
|
|
|
|
|
|
\subsubsection*{\ff \T{settagmethod (tag, event, newmethod)}} |
|
|
|
\Deffunc{settagmethod} |
|
|
|
This function sets a new tag method to the given pair \M{(tag, event)}. |
|
|
@ -2930,7 +2923,7 @@ so any existing program that opens at least one standard |
|
|
|
library before calling Lua does not need to be modified. |
|
|
|
|
|
|
|
\item Function \verb|dostring| no longer accepts an optional second argument, |
|
|
|
with a temporary error method. |
|
|
|
with a temporary error handler. |
|
|
|
This facility is now provided by function \verb|call|. |
|
|
|
|
|
|
|
\item Function \verb|gsub| no longer accepts an optional fourth argument |
|
|
@ -2951,8 +2944,10 @@ programs should use an explicit assignment instead, such as |
|
|
|
|
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
% restore underscore to usual meaning |
|
|
|
\catcode`\_=8 |
|
|
|
|
|
|
|
\newcommand{\indexentry}[2]{\item {#1} #2} |
|
|
|
%\catcode`\_=12 |
|
|
|
\begin{theindex} |
|
|
|
\input{manual.id} |
|
|
|
\end{theindex} |
|
|
|