Esempio n. 1
0
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;
}
Esempio n. 2
0
 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;
 }