Это большая работа, если вы планируете завершить ее.Лучше всего использовать тот, который предлагает Роберто, но если вы полны решимости написать свой собственный проект для знакомства с Эрлангом, вот несколько советов ...
Вы должны сначала решить, собираетесь ли вызакодируйте ваш парсер вручную или используйте leex и yecc для генерации вашего парсера из грамматики.Ручное кодирование может быть лучше, если вы хотите научиться писать идиоматический Erlang.Написание парсера - отличный способ познакомиться с Эрлангом;Функциональные языки программирования превосходны в реализации синтаксических анализаторов.
Во-вторых, вы должны решить, хотите ли вы сгенерировать DOM-подобную структуру или сделать SAX-подобную модель обратного вызова, известную как поведение в Erlang.Если вы сделаете последнее, вы можете просто реализовать поведение для создания DOM.
Если вы посмотрите на поведение, вам также может понадобиться параметризованные модули .Это экспериментальная функция, которая может дополнять поведение, позволяя сохранять неизменное состояние в «экземпляре модуля».Не известно, будет ли эта новая функция поддерживаться сообществом или нет.(Для некоторых это выглядит слишком ОО).
Еще один отличный ресурс - это код xmerl .Обратите внимание на то, как он определяет кодировку символов и анализирует соответственно.HTML (различные стандарты) работают немного иначе, но важно учитывать правильную кодировку символов при чтении файла.
Также из xmerl вы можете увидеть, как эта библиотека создает DOM с использованием кортежей Erlang.Возможно, вы захотите сделать что-то подобное.