mirror of
https://github.com/lua/lua
synced 2024-11-22 04:41:23 +03:00
eliminacao da funcao findenclosedconstant, cuja tarefa agora
e' realizada pelo analizador lexico
This commit is contained in:
parent
856004214f
commit
72f67fa810
53
table.c
53
table.c
@ -3,7 +3,7 @@
|
|||||||
** Module to control static tables
|
** Module to control static tables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_table="$Id: $";
|
char *rcs_table="$Id: table.c,v 1.1 1993/12/17 18:41:19 celes Exp roberto $";
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -115,57 +115,6 @@ int lua_findsymbol (char *s)
|
|||||||
return lua_ntable++;
|
return lua_ntable++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** Given a constant string, eliminate its delimeters (" or '), search it at
|
|
||||||
** constant table and return its index. If not found, allocate at end of
|
|
||||||
** the table, checking oveflow and return its index.
|
|
||||||
**
|
|
||||||
** For each allocation, the function allocate a extra char to be used to
|
|
||||||
** mark used string (it's necessary to deal with constant and string
|
|
||||||
** uniformily). The function store at the table the second position allocated,
|
|
||||||
** that represents the beginning of the real string. On error, return -1.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
int lua_findenclosedconstant (char *s)
|
|
||||||
{
|
|
||||||
int i, j, l=strlen(s);
|
|
||||||
char *c = calloc (l, sizeof(char)); /* make a copy */
|
|
||||||
|
|
||||||
c++; /* create mark space */
|
|
||||||
|
|
||||||
/* introduce scape characters */
|
|
||||||
for (i=1,j=0; i<l-1; i++)
|
|
||||||
{
|
|
||||||
if (s[i] == '\\')
|
|
||||||
{
|
|
||||||
switch (s[i+1])
|
|
||||||
{
|
|
||||||
case 'n': c[j++] = '\n'; i++; break;
|
|
||||||
case 't': c[j++] = '\t'; i++; break;
|
|
||||||
case 'r': c[j++] = '\r'; i++; break;
|
|
||||||
default : c[j++] = '\\'; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
c[j++] = s[i];
|
|
||||||
}
|
|
||||||
c[j++] = 0;
|
|
||||||
|
|
||||||
for (i=0; i<lua_nconstant; i++)
|
|
||||||
if (streq(c,lua_constant[i]))
|
|
||||||
{
|
|
||||||
free (c-1);
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
if (lua_nconstant >= MAXCONSTANT-1)
|
|
||||||
{
|
|
||||||
lua_error ("lua: constant string table overflow");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
lua_constant[lua_nconstant++] = c;
|
|
||||||
return (lua_nconstant-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Given a constant string, search it at constant table and return its index.
|
** Given a constant string, search it at constant table and return its index.
|
||||||
** If not found, allocate at end of the table, checking oveflow and return
|
** If not found, allocate at end of the table, checking oveflow and return
|
||||||
|
3
table.h
3
table.h
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
** Module to control static tables
|
** Module to control static tables
|
||||||
** TeCGraf - PUC-Rio
|
** TeCGraf - PUC-Rio
|
||||||
** $Id: $
|
** $Id: table.h,v 1.1 1993/12/17 18:41:19 celes Exp roberto $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef table_h
|
#ifndef table_h
|
||||||
@ -26,7 +26,6 @@ extern int lua_nfile;
|
|||||||
|
|
||||||
|
|
||||||
int lua_findsymbol (char *s);
|
int lua_findsymbol (char *s);
|
||||||
int lua_findenclosedconstant (char *s);
|
|
||||||
int lua_findconstant (char *s);
|
int lua_findconstant (char *s);
|
||||||
void lua_markobject (Object *o);
|
void lua_markobject (Object *o);
|
||||||
char *lua_createstring (char *s);
|
char *lua_createstring (char *s);
|
||||||
|
Loading…
Reference in New Issue
Block a user