Написание парсера: нужен совет

a10063

Хочу написать парсер (лексический и синтаксический анализаторы в связке) HTML, но из общих соображений - формальная грамматика, создание по ней ДКА, синтаксический анализ найденых токенов и пр. Сам в этом мало смыслю, но хочу разботать. Подскажите, что мне почитать.
С другой стороны, не хочется изобретать велосипед, хочется воспользоваться чем-то готовым (yacc, lex, bison). Поиски нормального парсера HTML (или того, что хочу сам написать) на языке PHP не увенчались успехом, а вызывать сишные программы запрещено. В общем, если кто сталкивался, может дадите ссылочку....

Ivan8209

http://dmoz.org/Computers/ и далее.
---
...Я работаю антинаучным аферистом...

Aleksei66

html с помощью yacc, lex, bison разбирать трудно если не невозможно, поскольку там между тегами может встречаться произвольный текст.

a10063

а как же DTD?
конечно для своего парсера вряд ли возможно будет использование такой записи грамматики, но можно переписать по аналогии...

Ivan8209

Прикинь, а между "/*" и "*/" тоже может встречаться произвольный текст.
---
...Я работаю антинаучным аферистом...

irina-sokolov

Воспользуйся парсерами XML.
от майкрософта есть библиотека msxml
для джавы есть парсеры xalan, xerces.
Не знаю, как у тебя пхп бьет с платформой и интеграцией, но вдруг поможет.

a10063

я думал уже об xml, т.к. у пхп есть его поддержка
однако, я пришел к мысли о написании грамматики, т.к. зачастую код, полученный из сети, не удовлетворяет не только xhtml, но и рекомендованному html (в общем, неудовлетворительный )
поэтому, думаю, библиотеки работы с xml не потянут это дело

Ivan8209

БНФ написать можешь?
Сходи на ДМоз или ГНУ и выбери то, что тебе понравится.
---
...Я работаю антинаучным аферистом...

a10063

ну, я пока на пхп не нашел нужного
но пока что в процессе... не могу утверждать, что ничего такого нет, поэтому и завел тред
с БНФ подожду пока, сначала определиться надо...

rosali

поскольку там между тегами может встречаться произвольный текст

не произвольный, а не содержащий тегов .
Есть ессессенно в Инете и .lex и .yy (или как они там) файлы для парсинга HTML... Лень искать, когда надо было нашел...

laki

Смотри Dom. PHP должен держать. А так можно посмотреть Java-вский. Одно но использования DOM-a html должен проходить валидацию w3c.
Оставить комментарий
Имя или ник:
Комментарий: