int EEL_Editor::namedTokenHighlight(const char *tokStart, int len, int state) { if (len == 4 && !strnicmp(tokStart,"this",4)) return SYNTAX_KEYWORD; if (len == 7 && !strnicmp(tokStart,"_global",7)) return SYNTAX_KEYWORD; if (len == 5 && !strnicmp(tokStart,"local",5)) return SYNTAX_KEYWORD; if (len == 8 && !strnicmp(tokStart,"function",8)) return SYNTAX_KEYWORD; if (len == 6 && !strnicmp(tokStart,"static",6)) return SYNTAX_KEYWORD; if (len == 8 && !strnicmp(tokStart,"instance",8)) return SYNTAX_KEYWORD; if (len == 6 && !strnicmp(tokStart,"global",6)) return SYNTAX_KEYWORD; if (len == 7 && !strnicmp(tokStart,"globals",7)) return SYNTAX_KEYWORD; if (len == 5 && !strnicmp(tokStart,"while",5)) return SYNTAX_KEYWORD; if (len == 4 && !strnicmp(tokStart,"loop",4)) return SYNTAX_KEYWORD; int x; for(x=0;;x++) { functionType *f = nseel_getFunctionFromTable(x); if (!f) break; if (f && !strnicmp(tokStart,f->name,len) && (int)strlen(f->name) == len) { return SYNTAX_FUNC; } } #ifdef START_ON_VARS_KEYWORD // todo: need to lookahead to see if the next token is (, if so, look at s_declaredFuncs, otherwise s_declaredVars/s_funcDef_vars if (state != STATE_BEFORE_CODE && (s_declaredVars.GetSize()||s_declaredFuncs.GetSize())) { char buf[1024]; if (len < sizeof(buf)) { lstrcpyn_safe(buf,tokStart,len+1); int tl; const char *ep = tokStart+len; const char *nexttok=sh_tokenize(&ep, ep+strlen(ep), &tl, NULL); if (nexttok && nexttok[0] == '(') { if (!s_declaredFuncs.Get(buf)) return SYNTAX_ERROR; } else { if (s_declaredVars.GetSize() && !s_declaredVars.Get(buf)) return SYNTAX_ERROR; } } } #endif return A_NORMAL; }
EEL_F *GetNamedVar(const char *s, bool createIfNotExists) { if (!*s) return NULL; EEL_F *r = m_namedvars.Get(s); if (r || !createIfNotExists) return r; r=NSEEL_VM_regvar(m_vm,s); if (r) m_namedvars.Insert(s,r); return r; }