2010-06-24 5 views
9

나는 Erlang에 아주 익숙하며 학습 연습의 일환으로 Erlang에 HTML 파서를 작성하고 싶다.Erlang에 HTML 파서 작성하기

추출 할 데이터를 설명하는 패턴을 사용하여 웹 페이지에서 특정 값을 추출하고 싶습니다.

누구나 얼랭 (Erlang)에서이 문제에 접근하는 방법에 대한 높은 수준의 조언을 제공 할 수 있습니까?

문서를 토큰 스택으로 바꾸어서 유한 상태 시스템을 사용하여 중첩 위치와 위치에있는 위치를 추적해야한다고 생각합니다. 난 당신이 하나에 모습을 가지고 제안

답변

4

이 작업을 완료하려면이 작업이 중요합니다. Roberto가 제안한 것을 사용하는 것이 가장 좋지만 Erlang에 익숙해지기 위해 프로젝트로 작성하기로 결정한 경우 다음과 같이 제안합니다.

먼저, 파서를 코딩하거나 leex and yecc을 사용하여 문법에서 파서를 생성하십시오. 관용적 인 Erlang을 작성하는 법을 배우려면 손으로 코딩하는 것이 더 나은 학습 경험이 될 수 있습니다. 파서를 작성하는 것은 Erlang을 소개하는 훌륭한 방법입니다. 함수형 프로그래밍 언어는 파서 구현에 탁월합니다.

둘째, Erlang에서 DOM과 유사한 구조를 생성할지 또는 behaviour으로 알려진 SAX와 같은 콜백 모델을 수행할지 결정해야합니다. 후자를 수행하는 경우 단순히 DOM을 작성하는 동작을 구현할 수 있습니다.

행동을 살펴보면 parametrized modules을 살펴볼 수도 있습니다. 이는 행동을 보완 할 수있는 실험적 기능으로, "모듈 인스턴스"내에 불변 상태를 저장할 수 있습니다. 이 새로운 기능이 커뮤니티에서 지원 될지 여부는 알려져 있지 않습니다. (어떤 사람들에게는 단지 너무 좋아 보인다).

또 다른 훌륭한 리소스는 xmerl 코드입니다. 문자 인코딩을 결정하고 그에 따라 구문 분석하는 방법에 가깝게 지불하십시오. HTML (유사 표준)은 약간 다르게 작동하지만 파일을 읽을 때 적절한 문자 인코딩을 고려해야합니다.

또한 xmerl에서 Erlang 튜플을 사용하여 해당 라이브러리가 DOM을 구성하는 방법을 확인할 수 있습니다. 비슷한 것을하고 싶을 수도 있습니다.

+1

아마 나는 매개 변수가있는 모듈을 조사하는 것이 좋습니다. 그것을 피하기위한 좋은 주장이 있습니다 (http://stackoverflow.com/questions/2291155/what-alternatives-are-there-to-parameterised-modules-in-erlang). – dsmith

+0

답장을 보내 주셔서 감사합니다. 많은 사람들이 사용하게 될 학습 운동이 아닙니다. XMerl은 볼만한 훌륭한 자료입니다. – dagda1