|
|
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
Есть строка : Код: plaintext Парсаю ее по-простому, с помошью стринговой функции spіlt() , а также оперторов switch-case . После парсинга прямо в ветви сase выполняю реакцию та соовествующий EV . Теперь вопрос: нужно ли для такой, относительно не сложной, задачи использовать какойто стандартный паттерн проектирования, и если да то какой ? Просто сейчас у меня стоит задача придумать юнит тест к етому делу, а у меня парсинг и реакция на собитие все в одной функции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 11:50 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
А среда какая? Для Дельфи у меня есть библиотека подпрограмм, которая обрабатывает строки параметров схожего вида: можно сразу выдрать параметр по номеру, значению, позиции, привести к нужному типу... --- Идеи движут Мир! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 12:03 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
Создать класс, имеющий как минимум 2 метода Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 12:03 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
Вам надо сначала определиться, что вы от этого парсера хотите. Если делать по-уму, то всю строку надо разбирать в абстрактное синтаксическое дерево и уже с ним работать (читайте про Visitor ). Но для такой задачи это может быть и из пушки по воробьям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 12:13 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
Я бы содрал модель с SAX Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 12:39 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
2 Alex_soldier Среда FlexBuilder, язык ActionScript 3.0. 2 Naf У меня уже есть клас который имеет метод parse() , если добавить метод todo() это сути по-моему не поменяет, switch - case просто будет в другом методе... 2 Нахлобуч Спасибо за линк! Меня очень смущает мой код, поетому хотелось бы найти золотую середину...ну чтобы не совсем из пушки...а хотя бы из ружья ;) 2 belugin Спасибо за код! Извините за наглость, но можна хоть два слова текстом, а то кроме ParseTest , практически ничего не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 14:40 |
|
||
|
Паттерн проектирования для парсинга
|
|||
|---|---|---|---|
|
#18+
посмотрите как устроен SAX . назначение Парзера преобразовывать строку (или файл или поток) в поток событий. При разборе строки когда он обнаруживает какие-то жлементы ее структуры он дергает методы переданного ему класса обработчика. Класс-обработчик уже выспринимает события и выпоняет действия по ним. Классы обработчиков обязаны иметь некий общий интерфейс. Например в случае SAX они получают события: началоЭлемента, конецЭлемента и пр. Для тестирования можно сделать обработчк, который записывает полученные события внутри себя в строку и потом сравнивать с эталоном эту строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 16:22 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=154&tid=1345707]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 403ms |

| 0 / 0 |
