В настоящее время я пытаюсь (или планирую попытку) написать простую (по возможности) программу для синтаксического анализа html-документа в дерево.
После googling я нашел много ответов, в которых говорилось: "Не делайте этого, это было сделано" (или слова на этот счет); и ссылки на примеры парсеров HTML; а также довольно решительная статья о том, почему нельзя использовать регулярные выражения. Однако я не нашел руководства по правильному написанию парсера. (Это, кстати, то, что я пытаюсь сделать больше, чем учащееся, чем что-либо, поэтому я бы очень хотел это сделать, а не использовать готовый)
Я считаю, что могу создать рабочий синтаксический анализатор XML, просто прочитав документ и добавив теги/текст и т.д. к дереву, повысив уровень, когда я нажимаю тег close (опять же, просто, без надобности или эффективности на данном этапе.). Однако для HTML не все теги закрыты.
Итак, мой вопрос таков: что бы вы порекомендовали как способ справиться с этим? Единственная идея, которую я имел, - это обработать ее так же, как и XML, но иметь список тегов, которые не обязательно закрыты с условиями закрытия (например, <p> заканчивается на </p> или в следующем <p> ).
Есть ли у кого-нибудь другие (надеюсь, лучшие) предложения? Есть ли лучший способ сделать это вообще?