html_parser_tarasenko 0.1.0

Базовий HTML-парсер на Rust з використанням Pest
Documentation

HTML Parser Tarasenko

Опис

Цей проект є базовим HTML-парсером, написаним на Rust із використанням Pest для синтаксичного аналізу. Парсер розбирає HTML-документи, виділяючи основні компоненти, такі як теги, атрибути та текстові вузли, створюючи деревоподібну структуру для представлення розмітки HTML.

Мета проекту

Метою цього проекту є створення синтаксичного аналізатора, здатного розпізнавати HTML-структури, включаючи вкладені елементи, атрибути тегів, текстові вузли, а також перевіряти правильність відкриття і закриття тегів.

Технічний опис синтаксичного аналізу

Що саме аналізується

Парсер аналізує наступні основні компоненти HTML-документа:

  1. Теги елементів: Відкриваючі та закриваючі теги розбираються як єдині вузли в дереві синтаксичного аналізу. Наприклад, тег <div> розпізнається як елемент із вкладеними дочірніми елементами, тоді як самозакриваючі теги на кшталт <img /> обробляються окремо.
  2. Атрибути тегів: Кожен тег може містити атрибути, записані у форматі name="value". Вони додаються до відповідного елемента як список пар "ім'я-значення".
  3. Вкладені елементи: Парсер підтримує вкладення елементів, що дозволяє розбирати HTML-структури будь-якої глибини, наприклад, <div><p><span>Text</span></p></div>.
  4. Текстові вузли: Будь-який текст між тегами обробляється як текстовий вузол і додається як дочірній елемент відповідного батьківського вузла.

Процес аналізу

Синтаксичний аналіз здійснюється за допомогою граматики, визначеної у файлі HTML.pest, яка розділяє HTML-код на основні компоненти: element, self_closing_element, attribute, text тощо. Граматика побудована таким чином, щоб дозволити рекурсивну обробку вкладених тегів.

Для забезпечення коректності структури HTML, після парсингу відбувається валідація збігу імен у відкриваючих і закриваючих тегах. Наприклад, для <div>...</div> парсер перевірить, що ім'я тега в кінцевому тегу відповідає імені в початковому. Якщо відбувається помилка (наприклад, <div>...</span>), програма повертає повідомлення про помилку.

Використання результатів аналізу

Результати синтаксичного аналізу зберігаються у вигляді дерева, де кожен вузол представляє HTML-елемент із потенційними дочірніми елементами. Дерево може бути використане для різних цілей:

  • Генерація або модифікація HTML: Оброблене дерево можна перетворити назад у HTML або модифікувати, додаючи чи видаляючи вузли.
  • Конвертація у формат XML або JSON: Це дозволяє імпортувати HTML-контент у програми, які працюють із структурованими даними.
  • Аналіз вмісту HTML: Можливість обробляти та витягувати текстові та атрибутивні дані дозволяє використовувати парсер для аналітичних задач, таких як аналіз контенту або пошук певних елементів.