2010-03-31 5 views
1

수신 메시지를 구문 분석하고 EDIFACT 형식 (기본적으로 구조화 된 구분 형식)으로 보내는 메시지를 생성해야합니다.양방향 파싱/생성을 위해 ANTLR을 사용할 수 있습니까?

메시지를 구문 분석하여 생성 될 Java 모델을 갖고 싶습니다. 그런 다음 동일한 모델을 사용하여 인스턴스를 만들고 메시지를 생성하고 싶습니다.

전반부는 괜찮습니다. ANTLR을 사용하여 원시 -> Java 객체로 이동했습니다. 하지만 나는 그 반대로 해본 적이 없어요.

ANTLR은 문법을 사용하여 생성을 지원합니까 아니면 실제로 구문 분석 전용 도구입니까?

편집 :

확장 - 내가 이상적으로 두 가지를 정의합니다. 원시 메시지를 설명하는 문법 (이 경우 EDIFACT이지만 원하는 경우 CSV로 가장하는 것). 그리고 자바 객체 모델.

원시 -> Java 모델에서 가져 오기 위해 ANTLR 문법을 작성할 수 있음을 알고 있습니다. 예 : SQL 문자열을 구문 분석 - 내가 전에 해본 자바 모델. 그러나 문법을 바꾸지 않고 이상적으로 다른 길로 갈 필요가 있습니다.

JAXB (XML 세계)에 비유하는 경우 XML 대신 EDIFACT 용 JAXB를 정말로 원합니다.

+0

Err이므로 영어를 스페인어로 변환하는 번역기 (문법 + 규칙)를 만들고 싶습니다. 그리고 같은 번역가 (그리고 같은 문법!)로 스페인어를 다시 영어로 번역합니까? –

답변

1

ANTLR이 당신이 원하는 것을 할 수 있습니까? 여러 개의 문법이 필요할 수도 있지만.

제게는 파서에서 AST를 만들고 싶습니다. 필요한 모든 Java 객체 생성을 수행하는 트리 워커 한 명을 두 번째 문법으로 만들 수 있습니다. 그리고 두 번째 트리 워커가 출력 메시지 (세 번째 문법)를 만들고, 원하는 경우 StringTemplate을 사용할 수도 있습니다. 어쩌면 두 문법으로 도망 갈 수 있습니다.

그러나이 시점에서 실제 세부 정보는 더 많은 도움을 주어야하며 AST가 특정 입력에 대해 어떻게 보이고 출력 메시지가 있어야하는지에 대해 설명해야합니다.

+1

감사합니다. 귀하의 접근 방식에 동의하지만 EDIFACT가 합리적으로 구성되어 있다면 ANTLR은 과도하다고 판단했습니다. –

0

필자는 자신을 전혀 해 본 적이 없다. (나는 ANTLR을 구문 분석에만 사용했다.) ANRLR을 생성기로 사용할 수 있다는 것도 잘 알고있다.

사실, 코드 작성을 위해 (동일한 저자가 작성한) stringtemplates 라이브러리를 사용하고 있습니다.

관련 문제