aboutsummaryrefslogtreecommitdiff
path: root/llex.c
diff options
context:
space:
mode:
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 @@
1/* 1/*
2** $Id: llex.c,v 1.56 2000/04/07 13:11:49 roberto Exp roberto $ 2** $Id: llex.c,v 1.57 2000/04/12 18:57:19 roberto Exp roberto $
3** Lexical Analyzer 3** Lexical Analyzer
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -18,6 +18,7 @@
18#include "lparser.h" 18#include "lparser.h"
19#include "lstate.h" 19#include "lstate.h"
20#include "lstring.h" 20#include "lstring.h"
21#include "ltable.h"
21#include "luadebug.h" 22#include "luadebug.h"
22#include "lzio.h" 23#include "lzio.h"
23 24
@@ -121,12 +122,18 @@ static void skipspace (LexState *LS) {
121} 122}
122 123
123 124
125static int globaldefined (lua_State *L, const char *name) {
126 const TObject *value = luaH_getglobal(L, name);
127 return ttype(value) != TAG_NIL;
128}
129
130
124static int checkcond (lua_State *L, LexState *LS, const char *buff) { 131static int checkcond (lua_State *L, LexState *LS, const char *buff) {
125 static const char *const opts[] = {"nil", "1", NULL}; 132 static const char *const opts[] = {"nil", "1", NULL};
126 int i = luaL_findstring(buff, opts); 133 int i = luaL_findstring(buff, opts);
127 if (i >= 0) return i; 134 if (i >= 0) return i;
128 else if (isalpha((unsigned char)buff[0]) || buff[0] == '_') 135 else if (isalpha((unsigned char)buff[0]) || buff[0] == '_')
129 return luaS_globaldefined(L, buff); 136 return globaldefined(L, buff);
130 else { 137 else {
131 luaX_syntaxerror(LS, "invalid $if condition", buff); 138 luaX_syntaxerror(LS, "invalid $if condition", buff);
132 return 0; /* to avoid warnings */ 139 return 0; /* to avoid warnings */