crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Надо написать html браузер
bynet
  опции профиля:
сообщение 13.11.2008, 20:38
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Мне надо написать html браузер. При написании его нельзя использовать практически никаких библиотек. Тоесть на читом visual studio. Без всяких STL, MFC. Но разрешили на qt,

Решил реализовывать использую регулярные выражения. Но стандартную библиотеку для работы с регуляными выражениями мне использовать нельзя.

Как лучше организовать регулярные выражения(алгоритм)? Или может лучше будет организовать другим способом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 13.11.2008, 22:46
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Столкнувшись с написанием конвертера HTML в WIKI формата, могу сказать точно, что регулярные выражения дял правильного разбора HTML использовать нельзя! :(

Например с помощью регулярного выражения правильно разобрать конструкцию с произвольной вложенностью невозможно:
<ol>
   <li>text1</li>
</ol>
<ol>
   <li>text2</li>
   <ol>
      <li>text3</li>
   </ol>
   <li>text4</li>
</ol>
<ol>
   <li>text5</li>
</ol>

небольшую дискусию об этом можно прочитать в теме: Разбор трехэтажных вложенных тегов, <ol> <li>...
То же относится к тэгам table или div, но с ними проще в отличии от приведенной мной выше конструкции.

Поэтому думаю тебе стоит написать свой парсер, который в принципе для твоих нужд будет написать не сложно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 13.11.2008, 22:57
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 13.11.2008, 22:46) *
Поэтому думаю тебе стоит написать свой парсер, который в принципе для твоих нужд будет написать не сложно.


Можно чуток по подробней. Как парсить? Где прочитать? Возможно ли это реализовать на QT?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bobdva
  опции профиля:
сообщение 13.11.2008, 23:13
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 2.10.2008
Из: Москва
Пользователь №: 377

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(bynet @ 13.11.2008, 21:38) *
Мне надо написать html браузер. При написании его нельзя использовать практически никаких библиотек. Тоесть на читом visual studio. Без всяких STL, MFC. Но разрешили на qt,

Решил реализовывать использую регулярные выражения. Но стандартную библиотеку для работы с регуляными выражениями мне использовать нельзя.

Как лучше организовать регулярные выражения(алгоритм)? Или может лучше будет организовать другим способом?


судя по всему, с вашим пониманием проблемы курить и курить вам множество литературы, и про конечные автоматы, и про парсеры, да и базовые возможности qt тоже бы не плохо было бы посмотреть чуть детальней, чем писать свой HTML браузер .

Кстати, WebKit в составе Qt не спасёт отца русской демократии ?

FYI, Уже в m$ потенциально посматривают в сторону WebKit'а...

Сообщение отредактировал bobdva - 13.11.2008, 23:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 13.11.2008, 23:22
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(bobdva @ 13.11.2008, 23:13) *
Цитата(bynet @ 13.11.2008, 21:38) *
Мне надо написать html браузер. При написании его нельзя использовать практически никаких библиотек. Тоесть на читом visual studio. Без всяких STL, MFC. Но разрешили на qt,

Решил реализовывать использую регулярные выражения. Но стандартную библиотеку для работы с регуляными выражениями мне использовать нельзя.

Как лучше организовать регулярные выражения(алгоритм)? Или может лучше будет организовать другим способом?


судя по всему, с вашим пониманием проблемы курить и курить вам множество литературы, и про конечные автоматы, и про парсеры, да и базовые возможности qt тоже бы не плохо было бы посмотреть чуть детальней, чем писать свой HTML браузер .

Кстати, WebKit в составе Qt не спасёт отца русской демократии ?

FYI, Уже в m$ потенциально посматривают в сторону WebKit'а...

Я спрашиваю как это организовать... Тоесть как парсить на словах..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.11.2008, 0:09
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(bobdva @ 13.11.2008, 23:13) *
Кстати, WebKit в составе Qt не спасёт отца русской демократии ?
На сколько я знаю это ему в универе дали задание, а там как известно халява вроде Webkit'a не пройдет. :(

Тоесть как я понимаю достаточно сделать вывод результата в консоль и не более того. :)

Цитата(bynet @ 13.11.2008, 23:22) *
Я спрашиваю как это организовать... Тоесть как парсить на словах..
У тебя есть массив символов, в цикле проходишь его и проверяешь на наличие открывающегося тэга или закрывающегося, дальше отображаешь даныне в зависимости от того, что за тэг.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bobdva
  опции профиля:
сообщение 14.11.2008, 8:58
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 29
Регистрация: 2.10.2008
Из: Москва
Пользователь №: 377

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 14.11.2008, 1:09) *
Цитата(bobdva @ 13.11.2008, 23:13) *
Кстати, WebKit в составе Qt не спасёт отца русской демократии ?
На сколько я знаю это ему в универе дали задание, а там как известно халява вроде Webkit'a не пройдет. :(

Тоесть как я понимаю достаточно сделать вывод результата в консоль и не более того. :)


а чем SAX Parser не устраивает для данной задачи ? :)
сомневаюсь, что потребуется делать анализ html с ошибками с точки зрения xml (не закрытые теги, одиночные теги типа <br> и т.п)

Сообщение отредактировал bobdva - 14.11.2008, 8:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 9:59
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(bobdva @ 14.11.2008, 11:58) *
а чем SAX Parser не устраивает для данной задачи ?
раз уж человеку STL нельзя использовать значит суть задания - построить синтаксический анализатор, читай SAX.

Цитата(ViGOur @ 14.11.2008, 1:46) *
Поэтому думаю тебе стоит написать свой парсер, который в принципе для твоих нужд будет написать не сложно.
Согласен

Я предлагаю сделать отдельный клас в стиле SAX-reader'а который будет обнаруживать во входной символьной последовательности:
1) открывающийся тэг
2) закрывающийся тэг
2) ошибку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 14.11.2008, 10:33
Сообщение #9


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 14.11.2008, 9:59) *
раз уж человеку STL нельзя использовать

в qt же облегченная версия stl есть, больше особо и не нада, тем более студенту. И вообще не понятно - mfc и stl нельзя, а qt - можно. Смысл?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.11.2008, 11:06
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 14.11.2008, 13:33) *
Смысл?
парсер прийдется писать руками, но можно использовать довольно удобный класс QString, а всю суть парсера человек постигнет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.12.2024, 21:22