mirror of
https://github.com/Nivanchenko/tokenizer.git
synced 2024-11-21 17:17:13 +02:00
ренейминг
This commit is contained in:
parent
24cb769b6b
commit
62260c2490
32
README.MD
32
README.MD
@ -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");
|
||||
Текст = ЧтениеТекста.Прочитать();
|
||||
ЧтениеТекста.Закрыть();
|
||||
|
||||
Токенизатор.Инит(Текст);
|
||||
Токенайзер.Инит(Текст);
|
||||
|
||||
Скобарь = Новый ПарсерСкобки(Токенизатор);
|
||||
Скобарь = Новый ПарсерСкобки(Токенайзер);
|
||||
Результат = Скобарь.Распарсить();
|
||||
```
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
|
||||
Описание.Имя("tokenizer")
|
||||
.Версия("1.0.0")
|
||||
.Версия("1.0.1")
|
||||
.Автор("Nikita Ivanchenko")
|
||||
.АдресАвтора("https://github.com/Nivanchenko")
|
||||
.Описание("Это очень хороший и нужный пакет программ")
|
||||
|
@ -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);
|
||||
|
@ -13,15 +13,15 @@
|
||||
Спека.Добавить(Новый СпецификацияТокенСтрока());
|
||||
Спека.Добавить(Новый СпецификацияТокенЧисло());
|
||||
Спека.Добавить(Новый СпецификацияТокенСимвол(Символы.ПС, "ПереносСтроки"));
|
||||
Токенизатор = Новый Токенизатор(Спека);
|
||||
Токенайзер = Новый Токенайзер(Спека);
|
||||
|
||||
ЧтениеТекста = Новый ЧтениеТекста("tests/features/small.lgp");
|
||||
Текст = ЧтениеТекста.Прочитать();
|
||||
ЧтениеТекста.Закрыть();
|
||||
|
||||
Токенизатор.Инит(Текст);
|
||||
Токенайзер.Инит(Текст);
|
||||
|
||||
Скобарь = Новый ПарсерСкобки(Токенизатор);
|
||||
Скобарь = Новый ПарсерСкобки(Токенайзер);
|
||||
Результат = Скобарь.Распарсить();
|
||||
|
||||
Сообщить(Результат.Количество());
|
@ -1,18 +1,18 @@
|
||||
|
||||
Перем Токенизатор;
|
||||
Перем __Токенайзер;
|
||||
Перем ПрошлиЗаголовок;
|
||||
|
||||
Процедура ПриСозданииОбъекта(Лексер)
|
||||
Токенизатор = Лексер;
|
||||
Процедура ПриСозданииОбъекта(Токенайзер)
|
||||
_Токенайзер = Токенайзер;
|
||||
ПрошлиЗаголовок = Ложь;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Распарсить() Экспорт
|
||||
ТекущийМассив = Новый Массив();
|
||||
|
||||
Пока Токенизатор.ЕстьЕщеТокены() Цикл
|
||||
Пока _Токенайзер.ЕстьЕщеТокены() Цикл
|
||||
|
||||
Токен = Токенизатор.СледующийТокен();
|
||||
Токен = _Токенайзер.СледующийТокен();
|
||||
|
||||
Если ПрошлиЗаголовок = Ложь И Не Токен.ТипТокена() = "Открыть" Тогда
|
||||
Продолжить;
|
||||
|
Loading…
Reference in New Issue
Block a user