1
0
mirror of https://github.com/Nivanchenko/tokenizer.git synced 2024-11-21 17:17:13 +02:00

ренейминг

This commit is contained in:
Nikita Ivanchenko 2024-07-06 18:25:37 +03:00
parent 24cb769b6b
commit 62260c2490
6 changed files with 55 additions and 55 deletions

View File

@ -1,6 +1,6 @@
## tokenizer
Токенизатор - простой пакет для разбиения строки на токены. Задача, которую он решает - разбиение строки на токены, по определенной спецификации.
Токенайзер - простой пакет для разбиения строки на токены. Задача, которую он решает - разбиение строки на токены, по определенной спецификации.
### Примеры использования
@ -13,14 +13,14 @@
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенСимвол(",", "Запятая"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
Токенизатор.Инит(Строка);
Токенайзер.Инит(Строка);
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
```
@ -35,13 +35,13 @@
3. `Начало()` - возвращает позицию токена в тексте.
4. `Размер()` - возвращает длину токена в тексте.
#### API объекта `Токенизатор` следующий:
#### API объекта `Токенайзер` следующий:
1. `Инит(Строка)` - инициализирует токенизатор строкой.
1. `Инит(Строка)` - инициализирует Токенайзер строкой.
2. `СледующийТокен()` - возвращает следующий токен.
3. `ЕстьЕщеТокены()` - возвращает `Истина`, если есть еще токены.
В конструктор `Токенизатор` передается спецификация токенов. Спецификация токенов - это массив объектов, реализующих интерфейс `СпецификацияТокена`.
В конструктор `Токенайзер` передается спецификация токенов. Спецификация токенов - это массив объектов, реализующих интерфейс `СпецификацияТокена`.
Интерфейс `СпецификацияТокена` описывает следующие методы:
@ -95,20 +95,20 @@
`ПарсерСкобки.os`
```bsl
Перем Токенизатор;
Перем __Токенайзер;
Перем ПрошлиЗаголовок;
Процедура ПриСозданииОбъекта(Лексер)
Токенизатор = Лексер;
Процедура ПриСозданииОбъекта(Токенайзер)
_Токенайзер = Токенайзер;
ПрошлиЗаголовок = Ложь;
КонецПроцедуры
Функция Распарсить() Экспорт
ТекущийМассив = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Пока _Токенайзер.ЕстьЕщеТокены() Цикл
Токен = Токенизатор.СледующийТокен();
Токен = _Токенайзер.СледующийТокен();
Если ПрошлиЗаголовок = Ложь И Не Токен.ТипТокена() = "Открыть" Тогда
Продолжить;
@ -151,15 +151,15 @@
Спека.Добавить(Новый СпецификацияТокенСтрока());
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенСимвол(Символы.ПС, "ПереносСтроки"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
ЧтениеТекста = Новый ЧтениеТекста("small.lgp");
Текст = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Токенизатор.Инит(Текст);
Токенайзер.Инит(Текст);
Скобарь = Новый ПарсерСкобки(Токенизатор);
Скобарь = Новый ПарсерСкобки(Токенайзер);
Результат = Скобарь.Распарсить();
```

View File

@ -5,7 +5,7 @@
Описание.Имя("tokenizer")
.Версия("1.0.0")
.Версия("1.0.1")
.Автор("Nikita Ivanchenko")
.АдресАвтора("https://github.com/Nivanchenko")
.Описание("Это очень хороший и нужный пакет программ")

View File

@ -2,7 +2,7 @@
#Использовать asserts
&Тест
Процедура Тест_Токенизатор1() Экспорт
Процедура Тест_Токенайзер1() Экспорт
// Дано
Спека = Новый Массив();
@ -10,17 +10,17 @@
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенПробелы(Ложь));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Токенизатор.Инит("123 5 ""890""");
Токенайзер.Инит("123 5 ""890""");
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(3);
@ -40,7 +40,7 @@
КонецПроцедуры
&Тест
Процедура Тест_Токенизатор2() Экспорт
Процедура Тест_Токенайзер2() Экспорт
// Дано
Спека = Новый Массив();
@ -48,17 +48,17 @@
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенПробелы(Истина));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Токенизатор.Инит("""123"" 5 ""890""");
Токенайзер.Инит("""123"" 5 ""890""");
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(5);
@ -88,7 +88,7 @@
КонецПроцедуры
&Тест
Процедура Тест_Токенизатор3() Экспорт
Процедура Тест_Токенайзер3() Экспорт
// Дано
Спека = Новый Массив();
@ -100,17 +100,17 @@
Спека.Добавить(Новый СпецификацияТокенСимвол("=", "ЕQUAL"));
Спека.Добавить(Новый СпецификацияТокенИдентификатор());
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Токенизатор.Инит("<tag name=""1 2 3"">");
Токенайзер.Инит("<tag name=""1 2 3"">");
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(6);
@ -126,7 +126,7 @@
КонецПроцедуры
&Тест
Процедура Тест_Токенизатор_регулярка() Экспорт
Процедура Тест_Токенайзер_регулярка() Экспорт
// Дано
Спека = Новый Массив();
@ -134,17 +134,17 @@
Спека.Добавить(Новый СпецификацияТокенРегулярноеВыражение(Новый РегулярноеВыражение("[а-я]+"), "РегекспСтрока"));
Спека.Добавить(Новый СпецификацияТокенСимвол(",", "Запятая"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Токенизатор.Инит("фб12,34а");
Токенайзер.Инит("фб12,34а");
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(5);
@ -160,25 +160,25 @@
КонецПроцедуры
&Тест
Процедура Тест_Токенизатор_СтрокиСЭкранинованиемКовычкой() Экспорт
Процедура Тест_Токенайзер_СтрокиСЭкранинованиемКовычкой() Экспорт
// Дано
Спека = Новый Массив();
Спека.Добавить(Новый СпецификацияТокенСтрока());
Спека.Добавить(Новый СпецификацияТокенСимвол(",", "Запятая"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Строка = """1 - """"один"""""",""2 - """"два"""" """;
Токенизатор.Инит(Строка);
Токенайзер.Инит(Строка);
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(3);
@ -189,25 +189,25 @@
КонецПроцедуры
&Тест
Процедура Тест_Токенизатор_СтрокиСЭкранинованиемСлешом() Экспорт
Процедура Тест_Токенайзер_СтрокиСЭкранинованиемСлешом() Экспорт
// Дано
Спека = Новый Массив();
Спека.Добавить(Новый СпецификацияТокенСтрока("\"));
Спека.Добавить(Новый СпецификацияТокенСимвол(",", "Запятая"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
// Когда
Строка = """1 - \""один\"""",""2 - \""два\"" """;
Токенизатор.Инит(Строка);
Токенайзер.Инит(Строка);
// Тогда
Результат = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенизатор.СледующийТокен());
Пока Токенайзер.ЕстьЕщеТокены() Цикл
Результат.Добавить(Токенайзер.СледующийТокен());
КонецЦикла;
Ожидаем.Что(Результат.Количество()).Равно(3);

View File

@ -13,15 +13,15 @@
Спека.Добавить(Новый СпецификацияТокенСтрока());
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенСимвол(Символы.ПС, "ПереносСтроки"));
Токенизатор = Новый Токенизатор(Спека);
Токенайзер = Новый Токенайзер(Спека);
ЧтениеТекста = Новый ЧтениеТекста("tests/features/small.lgp");
Текст = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Токенизатор.Инит(Текст);
Токенайзер.Инит(Текст);
Скобарь = Новый ПарсерСкобки(Токенизатор);
Скобарь = Новый ПарсерСкобки(Токенайзер);
Результат = Скобарь.Распарсить();
Сообщить(Результат.Количество());

View File

@ -1,18 +1,18 @@
Перем Токенизатор;
Перем __Токенайзер;
Перем ПрошлиЗаголовок;
Процедура ПриСозданииОбъекта(Лексер)
Токенизатор = Лексер;
Процедура ПриСозданииОбъекта(Токенайзер)
_Токенайзер = Токенайзер;
ПрошлиЗаголовок = Ложь;
КонецПроцедуры
Функция Распарсить() Экспорт
ТекущийМассив = Новый Массив();
Пока Токенизатор.ЕстьЕщеТокены() Цикл
Пока _Токенайзер.ЕстьЕщеТокены() Цикл
Токен = Токенизатор.СледующийТокен();
Токен = _Токенайзер.СледующийТокен();
Если ПрошлиЗаголовок = Ложь И Не Токен.ТипТокена() = "Открыть" Тогда
Продолжить;