Archive for 5월, 2008

Open source RSS Library – ROME

5월 27, 2008

RSS 공개 라이브러리인 ROME에 대해 잠시 살펴보자. ROME는 Open Source로 https://rome.dev.java.net/ 에서 관련 정보를 얻을 수 있다.

import java.net.URL;

import java.util.List;

import com.sun.syndication.feed.synd.SyndEntry;

import com.sun.syndication.feed.synd.SyndFeed;

import com.sun.syndication.feed.synd.SyndImage;

import com.sun.syndication.io.SyndFeedInput;

import com.sun.syndication.io.XmlReader;

public class TestRome {

@SuppressWarnings(“unchecked”)

public static void main(String[] args) {

try {

URL feedUrl = new URL(“https://mhjung.wordpress.com/feed”);

SyndFeedInput syndFeedInput = new SyndFeedInput();

XmlReader xmlReader = new XmlReader(feedUrl);

SyndFeed syndFeed = syndFeedInput.build(xmlReader);

System.out.println(“Title: ” + syndFeed.getTitle());

System.out.println(“Link: ” + syndFeed.getLink());

System.out.println(“Description: ” + syndFeed.getDescription());

System.out.println(“Language: ” + syndFeed.getLanguage());

System.out.println(“PublishedDate: ” + syndFeed.getPublishedDate());

if (syndFeed.getImage() != null) {

SyndImage image = syndFeed.getImage();

System.out.println(“Image Title: ” + image.getTitle());

System.out.println(“Image Url” + image.getUrl());

System.out.println(“Image Link” + image.getLink());

}

List<SyndEntry> entries = syndFeed.getEntries();

for (SyndEntry entry : entries) {

System.out.println(“[Entry]”);

System.out.println(“Title: ” + entry.getTitle());

System.out.println(“Link: ” + entry.getLink());

System.out.println(“Uri: ” + entry.getUri());

System.out.println(“Description: ” + entry.getDescription().getValue());

if(entry.getCategories().size() > 0) {

System.out.println(“Category: ” + entry.getCategories().get(0));

}

System.out.println(“PublishedDate: ” + entry.getPublishedDate());

}

} catch (Exception ex) {

ex.printStackTrace();

System.out.println(“ERROR: ” + ex.getMessage());

}

}

}

Feed에서 값을 얻어올 때에는 null 값에 유의해야 한다. 예를 들어 syndFeed.getImage()가 null을 반환하면 syndFeed.getImage().getTitle()을 호출 할 경우 nullPointException이 발생하므로 값을 처리할때에는 꼭 null 값을 반환하는지 확인을 해야한다. 그리고 syndFeed.getEntries().getCategories() 메소드의 경우에는 값을 갖지 않아도 객체는 생성되기 때문에 size를 확인 해야 한다. 이처럼 유의해야 할 사항이 많기 때문에 Feed의 값을 다룰때에는 반환값을 충분히 숙지하고 사용해야 한다.

  • PostScript

현재 EUC-KR 인코딩을 사용하여 서비스하는 피드는 모두 오류가 발생한다는 이슈가 있어 확인해 보았지만 같은 ROME 버전으로 테스트 해 본 결과 EUC-KR 로 사용하는 서비스도 모두 정상적으로 동작하였다. 해당 이슈는 Soulcarta’s Home 에서 확인 할 수 있다.

구글에서 제공하는 RSS의 경우 권한 없음을 알리는 403 코드가 돌아온다. 이 문제는 URL 대신 URLConnection을 사용하여 해결할 수 있다. URLConnection을 사용하여 User-Agent의 값을 자신의 응용프로그램의 이름이나 application/rss+xml 또는 text/xml 와 같이 자신이 처리할 형태를 표시해 주면 된다. 직접 확인해 보지는 않았지만 java.net.URL 대신 org.apache.commons.httpclient 패키지를 사용하여 해결 할 수도 있다고 한다.

URL feedUrl = new URL(“https://mhjung.wordpress.com/feed&#8221;);

위 코드를 다음과 같이 수정하면 된다.

URLConnection feedUrl = new URL(“http://news.google.co.kr/?output=rss&#8221;).openConnection();
feedUrl.setRequestProperty(“User-Agent”, “Hee’s RSS Reader”);

ROME가 지원하는 형식 : rss_2.0, rss_0.91N, rss_0.93, rss_0.92, rss_1.0, rss_0.94, rss_2.0,
rss_0.91U, rss_0.9, atom_1.0, atom_0.3

Advertisements

RSS 구독 목록을 위한 OPML의 사용

5월 21, 2008
  • OPML이란 무엇인가?

OPML은 Outline Processor Markup Language의 약자로서 직역을 하면 ‘개요 처리기를 위한 언어’ 정도로 해석된다. OPML은 서로 다른 운영체제와 환경에서 실행되는 응용프로그램간에 구조화된 개요정보를 교환하기 위한 XML 기반 형식이다라고 Dave Winer는 기술하고 있다. OPML은 원래 Radio UserLand에 의해 Outliner 어플리케이션을 위한 네이티브 파일 형식으로 개발 되었지만 이후 여러가지 다른 용도로 채택 되었다. 가장 공통적으로는 Web Feed와 Web Feed Aggregator 사이의 목록 교환이다. OPML 명세는 outline을 임의적인 요소의 계층적이고 질서 정연한 목록이라고 정의한다. 이 명세는 많은 유형의 목록 데이터를 적합하게 만들기 위해 개방되어 있다.

  • OPML의 활용

OPML은 인터넷 문서 수집을 위한 한 형식으로 그 특성상 RSS와 많이 비슷하고 Blog를 Channel별로 관리 할 수 있기 때문에 현재는 RSS Feed 목록을 교환하기 위한 목적으로 많이 사용되고 있다. 예를 들어 현재 사용하는 RSS 구독 서비스를 다른 RSS 구독 서비스로 교체할 경우 현재 사용하고 있는 구독 서비스에서 Feed의 목록을 OPML 파일을 내보내고 새로 교체 할 서비스에서 내보낸 OPML 파일을 가져오면 손 쉽게 RSS Feed들을 재등록 할 수 있다.

RSS Feed 목록을 교환하기 위해 OPML을 사용한 예를 살펴보자. 아래의 예제는 국내 RSS 구독 프로그램 중 하나인 “연모”라는 구독기에서 OPML 내보내기를 했을때 생성되는 OPML 파일이다.

<?xml version=”1.0″ encoding=”euc-kr”?>

<opml xmlns:xsd=”http://www.w3.org/2001/XMLSchema&#8221; xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”&gt;

<head>

<title>Generated by Yeonmo – http://www.yeonmo.co.kr</title&gt;

</head>

<body>

<outline title=”Friend”>

<outline type=”rss” title=”Hee’s Weblog” xmlUrl=”https://mhjung.wordpress.com/feed&#8221; htmlUrl=”https://mhjung.wordpress.com&#8221; description=””/>

<outline type=”rss” title=”blog*witch” xmlUrl=”http://softwitch.net/blog/feed&#8221; htmlUrl=”http://softwitch.net/blog&#8221; description=””/>

</outline>

<outline title=”News”>

<outline title=”문화/생활”>

<outline type=”rss” title=”Google 뉴스 한국 – 문화/생활” xmlUrl=”http://news.google.co.kr/?ned=kr&topic=l&output=rss&#8221; htmlUrl=”http://news.google.co.kr/?ned=kr&topic=l&#8221; description=””/>

</outline>

<outline type=”rss” title=”Google 뉴스 한국” xmlUrl=”http://news.google.co.kr/?ned=kr&output=rss&#8221; htmlUrl=”http://news.google.co.kr/?ned=kr&#8221; description=””/>

<outline type=”rss” title=”- Google 뉴스” xmlUrl=”http://news.google.co.kr/?ned=kr&topic=po&output=rss&#8221; htmlUrl=”http://news.google.co.kr/?ned=kr&topic=po&#8221; description=””/>

</outline>

</body>

</opml>

현재 제공중인 OPML 2.0 Draft Spec과 조금 다르기는 하지만 간단하게 OPML이 어떻게 구성되는지 살펴 볼 수 있다. 우선 현재의 2.0 Draft Spec을 기준으로 OPML을 구성하고 있는 Element들에 대해 하나씩 알아보자. OPML 파일은 XML 1.0 형식을 따른다. <opml> 요소는 필수 속성으로 version이라는 속성을 가진다. version의 값은 현재로서는 1.0 또는 2.0이 될 것이지만 만약 1.1이라는 값을 본다면 1.0과 똑같이 다루면 된다. 또한 <opml> 요소는 하위 요소로 반드시 <head>와 <body> 요소를 가져야 한다. <head> 요소는 0개 이상의 하위 요소를 선택적으로 포함 할 수 있는데 RSS를 교환하기 위한 목적으로 사용할 수 있는 요소로는 <title>, <dateCreated>, <dateModified>, <ownerName>, <ownerEmail>, <ownerId>가 있다. 각 요소의 이름만 봐도 사용법을 유추 할 수 있을 것이다. <ownerId>의 경우 OPML 파일을 생성한 소유주의 Email이나 웹 페이지의 주소와 같이 문서의 소유주와 의사 소통 하거나 확인 할 수 있는 유일한 값을 사용한다. <body> 요소는 하나 이상의 <outline> 요소를 포함한다. <outline> 요소는 RSS를 교환하기 위한 목적으로 사용 할 경우 필수적으로 type, text, xmlUrl 속성을 포함한다. type의 값은 rss가 되고 text는 RSS의 channel의 하위요소인 title 요소의 값으로 초기화 된다. 하지만 text 속성은 사용자가 편집할 수 있기 때문에 항상 RSS의 title 요소에 의존해서는 안된다. xmlUrl은 RSS Feed 주소를 값으로 가진다. <outline>는 그 이외에도 0개 이상의 선택적 요소를 포함 할 수 있는데 description, htmlUrl, language, title, version과 같은 속성들을 추가적으로 가질 수 있다. description은 RSS의 channel의 하위 요소인 description 요소의 값이고 htmlUrl은 channel의 하위 요소인 link의 값이 된다. language의 값은 channel의 하위 요소인 language의 값을 따른다. title은 아마 text와 같은 값을 가질 것이고 RSS Feed 교환을 목적으로 사용 할 경우 생략 할 수 없다. version의 경우 공급되는 RSS의 버전에 따라 달라지고 값으로는 RSS 1.0을 위한 RSS1과 RSS 0.91, 0.92 또는 2.0을 위한 RSS, scriptingNews 형식을 위한 scriptingNews가 될 것이다. Atom Feed를 위한 값은 정해져 있지 않지만 분명 추가 제공될 것이라고 한다.

OPML은 현재 2.0 Draft Spec까지 나와있다. 더 자세한 사항을 보고 싶은 사람들은 아래 참고 자료들을 참조하면 좋을 것이다.

  • 참고

한글 : OPML 2.0 Draft Specification (Korean)

영문 : OPML 2.0 Draft Specification (English)

UXTheme 사용시 Media Player에서 일본어 깨지는 현상 해결하기

5월 20, 2008

UXTheme를 사용하면 위와 같이 일본어를 제대로 표현 할 수 없는 경우가 발생한다. 이를 해결하기 위해서는 일본어를 모두 표현 할 수 있는 폰트로 교체해 주어야 하는데 Media Player에서 Icon 폰트를 사용하기 때문에 Icon에 해당하는 폰트를 바꾸어 주어야 한다. 이 방법으로는 스킨을 사용하여 앨범을 선택할 때 나오는 메뉴의 글자까지는 해결하지 못하더라도 기본적으로 제공되는 인터페이스의 일본어 글자가 깨지는 현상을 해결 할 수 있다.

Display Properties (바탕화면 등록정보)에서 Appearance 탭으로 이동한 후 Advanced를 선택하면 위와 같은 화면이 뜨는데 Item을 Icon으로 교체한 후 Font를 일본어가 지원 되는 폰트로 바꾸어 주면 아래와 같이 정상적인 문자를 볼 수 있다. 보통 윈도우에서 기본 지원하는 한글 이름의 폰트를 선택하면 일본어를 정상적으로 볼 수 있다.

OPML 2.0 Draft Specification

5월 19, 2008

히님이 직접 번역한 문서라서 많이 어설프니 원문이랑 같이 보는 것을 추천해 드립니다.

Outline

Outline은 각 노드가 String형식의 값을 가지고 있는 지명된 속성들의 셋을 포함하는 트리이다.

<opml>

<opml>는 version이라는 단 하나의 필수 속성을 가지는 XML 요소이다. <head>와 <body>는 양쪽 다 필수 요소이다. version Attribute는 x.y형식의 숫자 String이다. version의 값은 아마 1.0일 것이다. 만약 2000년도에 공개된 이 명세의 이전 버전을 따른다면 version의 값은 1.0일 것이고 이 명세를 따른다면 2.0이 될 것이다. 만약 version이 1.1인 파일을 본다면 1.0과 똑같이 다루면 될 것이다.

<head>

<head>는 아래에 묘사된 0개 이상의 요소를 선택적으로 포함한다.

<title> 는 문서의 제목이다.

<dateCreated>는 문서가 생성된 일시를 가리키는 date-time 형식이다.

<dateModified>는 문서가 마지막으로 수정된 일시를 가리키는 date-time 형식이다.

<ownerName>는 문서의 소유자를 가리키는 String 형식이다.

<ownerEmail>는 문서 소유자의 Email 주소를 가리키는 String 형식이다.

<ownerId>는 구독자가 Email이나 다른 방법을 통해 문서의 소유주와 의사를 소통하기 위한 정보를 포함하는 웹페이지의 http 주소를 포함한다. 또한 소유주를 확인하는데 사용 될 수 있다. ownerId는 유일한 값이다.

<docs>는 OPML 파일에서 사용된 형식을 위한 문서화의 http 주소이다. 아마도 누군가 지금으로 부터 수십년 후에 웹 서버에서 이 파일을 발견하고 궁금해 하는 사람들에게는 이 주소가 참고가 될 것이다.

<expansionState> 는 콤마로 구분지어진 확장되는 줄 번호의 목록이다. 목록의 줄 번호는 어느 헤드라인이 확장되어야(펼쳐져야) 할 지를 말한다. 목록에서 줄 번호의 순서는 중요하다. For each element in the list, X, starting at the first summit, navigate flatdown X times and expand.

<vertScrollState>는 Outline의 어느 줄이 창의 최상위 줄에 표시되는지에 대해 말하는 숫자 형식이다. 이 숫자는 이미 확장된(펼쳐져 있는) 상태와 함께 계산된다.

<windowTop>는 창의 윗쪽 가장자리의 픽셀 위치를 나타내는 숫자 형식이다.

<windowLeft>는 창의 왼쪽 가장자리의 픽셀 위치를 나타내는 숫자 형식이다.

<windowBottom>는 창의 아래쪽 가장자리의 픽셀 위치를 나타내는 숫자 형식이다.

<windowRight>는 창의 오른쪽 가장자리의 픽셀 위치를 나타내는 숫자 형식이다.

<body>

<body>는 하나 이상의 <outline> 요소를 포함한다.

<outline>

<outline> 는 text라는 필수 속성과 0개 이상의 추가 속성들을 포함하는 XML 요소이다. <outline>는 하위 요소로 <outline>를 0개 이상 포함 할 수도 있다. 같은 <outline> 안에서 속성이 반복되지 않을지도 모른다.

text 속성

outliner가 OPML 파일을 열었을때 무언가 표시되기 위해 <outline>마다 적어도 하나의 text 속성을 가져야만 한다. text 속성을 생략하면 outliner가 outline을 랜더링 할 수 없다. text 속성은 유저가 무엇을 볼 것인지를 결정한다. (<text 속성을 생략 한 경우> — 이것은 유저 경험상 명확히 받아들일 수 없다.) OPML의 생산 목적은 유저에게 outliner와 관련된 정보를 모으고 조직화 하는 힘을 주는 것이다. 이 것은 OPML이 자료를 서로 교환하는데 사용하기 때문에 중요하다.

어떤 outline 요소라도 text 속성이 없다면 오류이다.

text 속성은 인코딩된 HTML markup을 가질 수도 있다.

그 외 특수 속성들

type은 어떻게 <outline>의 다른 속성들이 해석되는지를 말해주는 String 형식의 속성이다.

isComment는 outline에 주석의 존재여부를 가리키는 “true” 또는 “false” 값을 가지는 String 형식이다. 만약 outline이 주석이 존재한다면 관습적으로 하위 outline들도 주석이 존재한다고 가정한다. 만약 존재하지 않으면 값은 false가 된다.

created는 outline 노드가 생성된 일시의 date-time 형식이다.

category는 RSS 2.0 category 요소에 의해 정의된 형식으로 ‘/’로 구분된 카테고리를 ‘,’로 나누어 놓은 String 형식이다. “태그”를 표현 할 때에는 카테고리 문자열은 ‘/’를 포함하지 않아야 한다.

카테고리 예제

1. category=”/Boston/Weather”

2. category=”/Harvard/Berkman,/Politics”

3. category=”Music, Mariah Carey, Hero” – 태그를 표현할 경우

Subscription lists

예약 구독 목록(Subscription lists)들은 아마 피드를 위한 예약 구독의 다단계 목록일 것이다. OPML 문서의 Body의 각 하위요소는 RSS 형식의 노드거나 RSS 형식의 노드들을 포함하는 outline 요소이다.

오늘날, 대부분의 예약 구독 목록들은 RSS의 단순한 배열이지만, 몇몇 aggregator들은 독단적으로 구조화된 예약 구독 목록들이 카테고리화된 것을 허용한다. 유효성 검사기의 몇몇 프로세서가 구조를 이해하거나 보존할 수 없어서 이 파일에 경고 신호를 보낼 지도 모른다.

필수 속성: type, text, xmlUrl. RSS 형식의 outline 요소를 위해, text는 Feed가 처음 가리키고 있는 상위 단계의 title 요소로 초기화 될 것이지만, 사용자가 수정할 수 있는 속성이므로 항상 Feed의 title에 의존해서는 안 될 것이다.

선택 속성: description, htmlUrl, language, title, version. 이 속성들은 유저가 예약 구독 목록을 표현할 때 유용하다. 버전을 제외한 나머지 속성들은 모두 Feed 그 자체의 정보로 부터 유래한다.

description 은 Feed의 상위 description 요소이다. htmlUrl은 상위 단계의 link 요소이다. language는 상위 단계의 language 요소의 값이다. title는 아마도 text 속성과 같은 값을 가질 것이고 생략 될 수 없다. title는 Feed의 상위 단계의 title 요소를 포함한다.

version은 공급되는 RSS의 버전에 따라 달라진다. 우리가 몇몇 프로세서만이 어떤 버전을 다룬다고 생각 했을때 개발 되었지만 주요한 이수가 되지 못했다. 가질 수 있는 값으로는 RSS 1.0을 위한 RSS1과 RSS 0.91, 0.92 또는 2.0을 위한 RSS, scriptingNews 형식을 위한 scriptingNews이다. Atom Feed를 위한 값은 정해져 있지 않지만 분명 추가 제공될 것이다.

Inclusion

link 형식의 outline 요소는 반드시 http 주소를 값으로 가지는 url 속성을 가져야 한다. text 요소는 일반적으로 outliner에 표시되고, 또한 HTML 렌더링에서 보여지는 것이다.

outliner에서 link 요소가 펼쳐졌을때, 만약 주소가 “.opml”로 끝난다면 outline는 그 장소에서 펼쳐진다. 이것을 inclusion(포함)이라고 부른다.

만약 주소가 “.opml”로 끝나지 않는다면 link는 웹 브라우저에서 보여 질 수 있는 어떤 것이라고 가정한다.

OPML 2.0에서 새로운 형식을 소개한다. include 형식의 outline 요소는 반드시 포함하려는 OPML 파일을 가리키는 url 속성을 가져야 한다. text 요소는 일반적으로 outliner에 표시되고, 또한 HTML 렌더링에서 보여지는 것이다.

link와 include의 차이점은 link는 웹 브라우저에 보여질 무엇인가를 가리키고, include는 항상 OPML 파일을 가리킨다는 것이다.

Directories

directory 는 include, link 또는 rss와 기타 다른 형식들과 함께 outline의 독자적인 구조를 포함할 지도 모른다. 디렉토리들을 보여주거나 OPML 에디터와 같은 outliner를 포함하는 넓고 다양한 소프트웨어에 사용될 수 있다.

Extending OPML
An OPML file may contain elements and attributes not described on this page, only if those elements are defined in a namespace, as specified by the W3C.

OPML can also be extended by the addition of new values for the type attribute. When specifying such an extension, following the example of this specification, say which attributes are required and which are optional, and explain the roles each of the attributes plays, how they relate to each other, and what rules they must conform to. There is a mechanism in the OPML Editor that is based on this form of extension.

Developers should, whenever possible, use capabilities that are already in use by others, or included in this spec, or recommendations or guidelines.

Examples

http://hosting.opml.org/dave/spec/subscriptionList.opml

http://hosting.opml.org/dave/spec/states.opml

http://hosting.opml.org/dave/spec/simpleScript.opml

http://hosting.opml.org/dave/spec/placesLived.opml

http://hosting.opml.org/dave/spec/directory.opml

http://hosting.opml.org/dave/spec/category.opml

Notes

1. All date-times conform to the Date and Time Specification of RFC 822, with the exception that the year may be expressed with two characters or four characters (four preferred).

2. The page in <ownerId> may contain link elements pointing to other documents containing information about the owner. For example, you may have a link element pointing to a FOAF document describing the owner and his or her network of friends; or an RSS feed with news from the owner, possibly even related via the RSS 2.0 category element to parts of the OPML document. In other words, all the extension mechanisms of HTML can come into play.

3. The value of type attributes are not case-sensitive, that is type=”LINK” has the same meaning as type=”link”.

4. Outline attributes generally do not contain encoded HTML markup, unless their are specifically said to include markup.

5. Processors should ignore any attributes they do not understand.

6. There are no documented limits to the number of attributes an <outline> element can have, or the number of <outline> elements it can contain or the size of any attribute.

7. Each sub-element of <head> may appear once or not at all. No sub-element of <head> may be repeated.

8. If an HTML page is generated using an OPML document, you may use an HTML link element to provide for “auto-discovery” of the OPML. The rel attribute value is “outline”, the type “text/x-opml”, and of course the href attribute contains the address of the OPML document.

9. You may include elements of OPML 2.0 in other XML-based formats. The URI for the namespace is http://opml.org/spec2. The namespace declaration should look like this: xmlns:opml=”http://opml.org/spec2&#8243;. However, for backward compatibility, the core elements (those defined by this spec) in an OPML 2.0 document are not in a namespace. Here’s an example of an RSS 2.0 file that contains an outline in one of its items.

Roadmap

Version 2.0 is the last version of OPML. Any further development will take place in namespaces, new outline types, per the Extending OPML section of this specification; or in formats derived from OPML with different names.

Copyright and disclaimer

© Copyright 2000 UserLand Software, Inc. All Rights Reserved.
© Copyright 2006-2007 Scripting News, Inc. All Rights Reserved.

UserLand Software, Inc. and Scripting News, Inc. are refererred to in the following as “the Companies.”

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works.

This document may not be modified in any way, such as by removing the copyright notice or references to the Companies or other organizations. Further, while these copyright restrictions apply to the written OPML specification, no claim of ownership is made by the Companies to the format it describes. Any party may, for commercial or non-commercial purposes, implement this format without royalty or license fee to the Companies. The limited permissions granted herein are perpetual and will not be revoked by the Companies or their successors or assigns.

This document and the information contained herein is provided on an “AS IS” basis and THE COMPANIES DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

OPML Icon

5월 10, 2008

OPML의 Icon이 아직 정해지지 않은 것 같아서 만들어 봤는데 디자이너가 아니라서 그런지 좀 이상하네요. 나름 괜찮다고 생각했는데 만들고 보니 나선으로 만들면 축소했을때… 나중에 일러스트레이터를 배워서 다시 한번 디자인 해 봐야겠네요. 배경 색깔이 좀 마음에 안들지만 나름대로 잘 디자인 된 아이콘이 있는 사이트도 한 군데 발견했습니다. http://chris.pirillo.com/2006/06/30/opml-icon/

The Definitive ANTLR Reference

5월 1, 2008

@Deprecated

특정 도메인 언어 구축을 위한 ANTLR(ANother Tool for Language Recognition) Reference 문서를 번역중에 있습니다.

  • ANTLR은 무엇입니까?

ANTLR은 다양한 타겟 언어에서 액션을 포함하는 문법적 설명으로 부터 분석자(Recognizers), 통역자(Interpreters), 컴파일러(Compilers)와 번역기를 제공하는 언어 도구이다. ANTLR은 트리 구성, 트리 순회, 번역, 오류 회복, 오류 알림을 위한 뛰어난 지원을 제공한다. 현재 한달에 약 5,000건의 ANTLR 소스가 다운로드 되고 있다.

공식 사이트 : http://www.antlr.org/

번역 문서 : 저작권이 있는 문서이므로 공개를 중지합니다. 번역 후 가이드를 만들어 올리겠습니다.

======================================

찾으시는 분들이 많으신데 제가 번역을 시작한 초반부에 취업을 하면서 번역작업을 하지 못하였기때문에 초기 몇페이지 밖에 번역이 되어있지 않습니다. 번역본 보다는 영어로 된 원서가 용어면에서 더 이해하기 쉬우니 그냥 원서를 보시는게 나을 듯 합니다. 조치를 늦게 취해서 죄송합니다.