2019-01-19 14:42:56 +01:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "util.h"
|
|
|
|
|
|
2019-01-22 00:08:27 +01:00
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
internalSymbol,
|
|
|
|
|
variableSymbol
|
|
|
|
|
} symbolType;
|
|
|
|
|
|
2019-01-19 14:42:56 +01:00
|
|
|
|
int addSymbolInternal(char *symbol, object (*function)());
|
2019-01-22 00:08:27 +01:00
|
|
|
|
int addSymbolVariable(char *symbol, object variable);
|
2019-01-19 14:42:56 +01:00
|
|
|
|
/* служе за различите методе дефинисања нових симбола у језику
|
|
|
|
|
* враћају 1 уколико је нови симбол успешно додат, а 0 уколико није
|
|
|
|
|
* (постоји симбол са истим именом) */
|
|
|
|
|
|
|
|
|
|
int symbolExists(char *symbol);
|
|
|
|
|
/* враћа 1 уколико симбол постоји и 0 у супротном */
|
2019-01-22 00:08:27 +01:00
|
|
|
|
symbolType typeOf(char *symbol);
|
2019-01-19 14:42:56 +01:00
|
|
|
|
|
|
|
|
|
object (*internalFunction(char *symbol)) (object parameters);
|
|
|
|
|
/* враћа показивач на функцију уколико је симбол дефинисан као интерна
|
|
|
|
|
* функција, NULL уколико симбол није функција или уколико не постоји
|
|
|
|
|
* */
|
2019-01-22 00:08:27 +01:00
|
|
|
|
object referVariable(char *symbol);
|
|
|
|
|
/* враћа вредност на коју се односи име симбола у табели */
|