Библиотека содержит следующие глобальные переменные и ф-ции, опишу основные:
lexer_struct *LEXER_LOAD(char *code);
Загружает исходный код и преобразует в массив токенов, возвращает указатель на структуру.
Структура следующая:
Code: Select all
typedef struct
{
char type;
char *token;
unsigned int lenght;
} lexer_struct;
Поддерживаются следующие:
0 -> неопределенно
1 -> переменная
2 -> функция
3 -> число
4 -> индитификатор
5 -> строковое значение
6 -> разное, не входящие в тип
7 -> последний тип, который сообщает завершение.
Следующая ф-ция:
char *LEXER_CURRENT(void);
Возвращает текущую лексему.
char *LEXER_NEXT(void);
Возвращает следующую лексему.
char *LEXER_BACK(void);
Возвращает предыдущую лексему.
Если помимо лексемы хочется получить длину и тип, то есть специальные глобальные переменные LEXER_TOKEN,LEXER_LEN,LEXER_TYPE.
Стоит отметить, ради удобства было сделано при первом вызове LEXER_NEXT возвратить LEXER_CURRENT.
Неосновные глобальные переменные:
unsigned int LEXER_LTBUF;// задать размер буфера выделения памяти по блочно для лексемы. По умолчанию 0xF.
unsigned int LEXER_LABUF;// задать размер буфера выделения памяти по блочно для массива токенов. По умолчанию 0xFF количество.
Понятно, что можно настроить для минимизации затрат ОЗУ памяти, но ф-ция LEXER_LOAD будет выполняться медленее, чем при увеличении затрат.