#ifndef SYMTAB_H_INCLUDED
#define SYMTAB_H_INCLUDED
#include "value.hpp"
struct symrec
{
char *name; /* name of symbol */
int type; /* type of symbol: either VAR or FNCT */
value var;
union
{
value (*fnctptr)(const value &); /* value of a FNCT */
value (*fnctptr2)(const value &,const value &); /* value of a bin FNCT*/
value (*procptr)(void); /* value of a proc */
char *body; /* function body */
} ivalue;
struct symrec *next; /* link field */
};
typedef struct symrec symrec; /* The symbol table: a chain of truct symrec'. */
extern symrec *sym_table;
symrec * putsym(char *sym_name,int sym_type);
symrec * getsym(char *sym_name);
symrec * getsym(char *sym_name,int);
void init_table(void);
value evaluate(const symrec *);
value evaluate(const symrec *,const value &);
value evaluate(const symrec *,const value &,const value &);
value evaluate_n(const symrec *,const valuematrix &);
int arguments(const symrec *); // returns max number of arguments
#endif
syntax highlighted by Code2HTML, v. 0.9.1