Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Apr 25, 2019 7:51 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 3 posts ] 
Author Message
 Post subject: lexer.obj
PostPosted: Wed Oct 07, 2015 6:52 pm 
Offline
User avatar

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

lexer_struct *LEXER_LOAD(char *code);

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

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 будет выполняться медленее, чем при увеличении затрат.


Attachments:
File comment: Библиотека для парсинга.
lexer.obj [1.9 KiB]
Downloaded 94 times
Top
   
 Post subject: Re: lexer.obj
PostPosted: Mon Oct 12, 2015 7:11 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4993
Клево, ты переделал в либу!

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


Top
   
 Post subject: Re: lexer.obj
PostPosted: Mon Oct 12, 2015 8:36 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 252
Leency wrote:
Клево, ты переделал в либу!

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 3 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited