/******** symbol.c ************/

#include "global.h"

#define STRMAX 999  /*taille de la table lexemes*/
#define SYMMAX 100   /* taille de symtable*/
char lexemes[STRMAX];
int lastchar = -1; /*derniere position */
                  /* utilisee dans lexemes*/
struct entry symtable[SYMMAX];
int lastentry= 0; /*derniere position */
                  /* utilisee dans symtable*/

int lookup(char s[])   /*retourne la position */
               /* d'une entree pour s */

{
   int p;
   for (p= lastentry; p > 0; p = p-1)
      if (strcmp(symtable[p].lexptr, s) == 0)
          return p;
   return 0;
}

int insert(char s[], int tok)   /*retourne la position */
                    /* d'une entree pour s */
 
{
    int len;
    len = strlen(s);   /* strlen calcule la */
                      /*  longueur de s */
    if (lastentry + 1 >= SYMMAX)
        error( "table pleine");
    if (lastchar + len + 1 >= STRMAX)
      error("tableau des lexemes plein");
    lastentry = lastentry + 1;
    symtable[lastentry].token = tok;
    symtable[lastentry].lexptr
                = &lexemes[lastchar + 1];
    lastchar = lastchar + len + 1;
    strcpy(symtable[lastentry].lexptr, s);
    return lastentry;
}
