summaryrefslogtreecommitdiff
path: root/llex.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-05-08 16:32:53 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-05-08 16:32:53 -0300
commit11a70220670f25a9929439f0b27331f09f05235c (patch)
treec4a962b5a3e53ac6df8894fb3ad2248c4a1256cb /llex.c
parent35a6ed283881f313152457f24cc6c677122d5058 (diff)
downloadlua-github-11a70220670f25a9929439f0b27331f09f05235c.tar.gz
global variables are stored in a Lua table
Diffstat (limited to 'llex.c')
-rw-r--r--llex.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/llex.c b/llex.c
index 4efcb873..ae498715 100644
--- a/llex.c
+++ b/llex.c
@@ -1,5 +1,5 @@
/*
-** $Id: llex.c,v 1.56 2000/04/07 13:11:49 roberto Exp roberto $
+** $Id: llex.c,v 1.57 2000/04/12 18:57:19 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@@ -18,6 +18,7 @@
#include "lparser.h"
#include "lstate.h"
#include "lstring.h"
+#include "ltable.h"
#include "luadebug.h"
#include "lzio.h"
@@ -121,12 +122,18 @@ static void skipspace (LexState *LS) {
}
+static int globaldefined (lua_State *L, const char *name) {
+ const TObject *value = luaH_getglobal(L, name);
+ return ttype(value) != TAG_NIL;
+}
+
+
static int checkcond (lua_State *L, LexState *LS, const char *buff) {
static const char *const opts[] = {"nil", "1", NULL};
int i = luaL_findstring(buff, opts);
if (i >= 0) return i;
else if (isalpha((unsigned char)buff[0]) || buff[0] == '_')
- return luaS_globaldefined(L, buff);
+ return globaldefined(L, buff);
else {
luaX_syntaxerror(LS, "invalid $if condition", buff);
return 0; /* to avoid warnings */