Add Multi threading

This commit is contained in:
2019-04-15 19:27:49 +03:00
parent 67bb7b5fed
commit 94d7217bbe
5 changed files with 619 additions and 666 deletions

121
DOC_RU.MD
View File

@@ -1,54 +1,67 @@
# AGPascalTokenizer
Библиотека токенайзер для Delphi/FPC. Основана на работе [PyPascalTokenizer](https://github.com/Artem3213212/PyPascalTokenizer) [Артёма Гаврилова](https://github.com/Artem3213212).
## API
### TToken
TToken это тип `record` из:
* Text: `string` с текстом токена.
* &begin: `TTokenizerPos` со стартовой позицией токена.
* &end: `TTokenizerPos` с конечной позицией токена.
* ended: `boolean` Истина, если это был постедний токен.
Имеет конструктор Create с перечисленными переменными.
### TTokenizerPos
тип `record`, сохраняет позицию в формате:
* x: `integer` начало зависит от платформы (`NEXTGEN`), индекс символа в строке.
* y: `integer` начало с 0, номер строки.
### `Class` PasTokenizer
Главный класс токенайзера.
* s: `TStrings` приватная, используйте конструктор. Список строк исходного кода.
* get_next(): функция, возвращает `TToken`. Возвращает следующий токен и изменяет свою позицию.
* read_next(): функция, не имплементированно, Возвращает следующий токен, не изменяя свою позицию.
* is_ended(): функция, не имплементированно, проверка что текст закончился.
Имеет конструктор Create с параметром `s`.
### `Class` PasTokenizerStack
Не имплементированно.
### `Class` PasTokenizerParallelStack
Не имплементированно.
## Утилиты
Вспомогательные функции для анализа текста.
* is_name(s: `string`): `boolean` Проверка что идентификатор правильный.
* is_comment(s: `string`): `boolean` Проверка что комментарий правильный.
* is_string(s: `string`): `boolean` Проверка что это строковое значение.
## Авторы
[Артём Гаврилов](https://github.com/Artem3213212) и [Владислав Уткин](https://github.com/viad00).
# AGPascalTokenizer
Библиотека токенайзер для Delphi/FPC. Основана на работе [PyPascalTokenizer](https://github.com/Artem3213212/PyPascalTokenizer) [Артёма Гаврилова](https://github.com/Artem3213212).
## API
### TAGToken
TAGToken это тип `record` из:
* Text: `string` с текстом токена.
* &begin: `TAGTokenizerPos` со стартовой позицией токена.
* &end: `TAGTokenizerPos` с конечной позицией токена.
* ended: `boolean` Истина, если это был постедний токен.
Имеет конструктор Create с перечисленными переменными.
### TAGTokenizerPos
тип `record`, сохраняет позицию в формате:
* x: `integer` начало зависит от платформы (`NEXTGEN`), индекс символа в строке.
* y: `integer` начало с 0, номер строки.
### `Class` TAGPasTokenizer
Главный класс токенайзера.
* get_next(): функция, возвращает `TAGToken`. Возвращает следующий токен и изменяет позицию.
* pos: `TAGTokenizerPos` свойство, содержит позицию где токенайзер .
* is_ended: `boolean` свойство, проверка что текст закончился.
Имеет конструктор Create с параметром `input`: `TStrings`.
### `Class` TAGPasTokenizerStack
Стек из токенов автоматически заполняется из input'а.
* Push(t: `TAGToken`) кладёт токен в стек.
* Pop(): `TAGToken` достать токен из стека.
* Last: `TAGToken` свойство, выдающееся вершина стека.
* is_ended: `boolean` свойство, проверка конца текста.
Имеет конструктор Create с параметрами `input`: `TStrings` и GetComments: `boolean=True`.
### `Class` TAGPasTokenizerParallelStack
Стек из токенов автоматически заполняется из input'а(во втором потоке).
* Push(t: `TAGToken`) кладёт токен в стек.
* Pop(): `TAGToken` достать токен из стека.
* Last: `TAGToken` свойство, выдающееся вершина стека.
* ended: `boolean` свойство, проверка конца текста.
Имеет конструктор Create с параметрами input: `TStrings`, GetComments: `boolean=True` и stackMax:`integer=1000`.
## Утилиты
Вспомогательные функции для анализа текста.
* IsName(s: `string`): `boolean` Проверка что идентификатор правильный.
* IsComment(s: `string`): `boolean` Проверка что комментарий правильный.
* IsString(s: `string`): `boolean` Проверка что это строковое значение.
## Авторы
[Артём Гаврилов](https://github.com/Artem3213212) и [Владислав Уткин](https://github.com/viad00).