Существует хорошо разработанная теория синтаксического анализа и неисчислимое количество инструментов для ее поддержки.В общем, вы смотрите на каждого персонажа, по одному, и решаете, когда созданные вами персонажи составляют токен .Затем вы смотрите на серию токенов и решаете, когда последовательность токенов представляет собой грамматическую конструкцию более высокого уровня - в данном случае, HTML-элемент.При распознавании конструкций вы создаете дерево узлов для их представления - в данном случае дерево DOM.
Итак, вы знакомы с неконтекстными грамматиками и компиляторами, такими как yacc, bison иих более современные аналоги?Если вы понимаете это, парсер DOM не должен быть загадкой.