Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт июн 27, 2017 8:25 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 3 сообщения ] 
Автор Сообщение
 Заголовок сообщения: lexer.obj
СообщениеДобавлено: Ср окт 07, 2015 6:52 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Создал новую библиотеку для колибри ОС. Данная библиотека позволяет из входного текстового кода преобразовывать в лексемы, что очень удобно для парсинга (интерпретации, трансляции) кода.
Библиотека содержит следующие глобальные переменные и ф-ции, опишу основные:

lexer_struct *LEXER_LOAD(char *code);

Загружает исходный код и преобразует в массив токенов, возвращает указатель на структуру.
Структура следующая:

Код:
typedef struct
{
    char type;
    char *token;
    unsigned int lenght;
} lexer_struct;


char type // тип токена
Поддерживаются следующие:
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 будет выполняться медленее, чем при увеличении затрат.


Вложения:
Комментарий к файлу: Библиотека для парсинга.
lexer.obj [1.9 КБ]
27 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: lexer.obj
СообщениеДобавлено: Пн окт 12, 2015 7:11 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4088
Клево, ты переделал в либу!

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: lexer.obj
СообщениеДобавлено: Пн окт 12, 2015 8:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 156
Leency писал(а):
Клево, ты переделал в либу!

Да, я сейчас многое переделываю, точнее переписываю на gcc.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 3 сообщения ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB