2014-11-02 9 views
0

저는 컴파일러 구축을 배우고 있으며 JavaCC를 사용하여 JavaScript 문법을 구현하려고합니다.JavaCC 문법 파일 (.jj)을 모듈화하는 방법은 무엇입니까?

(나는 이미 지금은 그위한 JavaCC에 기반 파서 대응을 작성하려면, 자바 스크립트 코드의 프로그램 구성을 할 수 있습니다 내 자신의 JavaScript CodeModel 작성했습니다.)

내 질문은, 가 할 수있는 방법이있다 JavaCC 문법 (.jj -file)을 여러 파일로 모듈화 하시겠습니까?

저는 JavaParser과 함께 매우 좋은 경험을 가지고 있으므로 java_1_5.jj 문법을 배우고 있습니다. 그러나이 파일은 이해하기 어려운 3000+ LoC 파일입니다.

나는 쉽게 이해하고 이해할 수 있도록 문법 파일을 여러 부분으로 나누고 싶습니다. "javacc modular", "javacc include", "javacc import"에 대한 Google의 검색 결과에 도움이되지 못하는 일부 결과가 나타납니다.

구체적으로 말하면 IDENTIFIER (lines 380-1081)의 정의를 다른 파일로 옮기는 방법은 무엇입니까?

+0

실제로 .jj 파일을 모듈화하는 방법은 없습니다. 가장 좋은 방법은 JJT를 사용하는 것입니다. JJT를 사용하면 모든 액션을 문법 파일 밖으로 옮길 수 있습니다. include 기능을 원한다면 사용할 수있는 많은 프리 프로세서가 있습니다. –

+0

@TheodoreNorvell 답변을 게시 하시겠습니까? 고맙습니다. – lexicore

+0

JJT를 사용하지 않으려는 경우 가장 좋은 방법은 빌더 패턴을 사용하는 것입니다. –

답변

1

.jj 파일을 모듈화하기 위해 JavaCC에 내장 된 방법은 없습니다. 가장 좋은 방법은 JJT를 사용하는 것입니다. JJT를 사용하면 모든 액션을 문법 파일 밖으로 옮길 수 있습니다. JJT를 사용하고 싶지 않다면 가장 좋은 방법은 빌더 패턴을 사용하는 것입니다.

include 기능을 원하면 많은 사전 처리기를 사용할 수 있습니다.

+0

당신은 내 마음을 읽고 있습니다. 나는 건축업자 battern를 사용하고있다. https://github.com/highsource/javascript-codemodel/blob/master/parser/src/main/java/org/hisrc/jscm/parser/JSCodeModelBuilder.java – lexicore

+0

다시 물어봐서 죄송합니다. 포함을 지원하는 전 처리기? 어떻게 든 나는 그 중 하나를 찾을 수 없습니다 ... – lexicore

+0

cpp 또는 m4 모두 파일을 포함합니다. cat 또는 ANT의 concat 작업을 사용하여 여러 파일을 함께 연결할 수도 있습니다. –