2009-11-02 3 views

답변

0

아마도. 첫 번째 문제는 AST를 제공하는 Java 컴파일러를 찾는 것입니다. Eclipse 컴파일러를 사용해보십시오. 여기서 모든 유형을 Groovy AST 변환기가 예상하는 유형으로 맵핑하면됩니다. 오리 타이핑은 두 개의 AST에 호환 정보가 포함되어있을 때만 도움이 될 것입니다 (나는 의심 스럽습니다).

그 후, 당신은 바이트 코드가 생성 전에 컴파일러 에서 AST를 얻을 수있는 방법을 찾을 필요가 다음 수있는 방법이 바이트 코드를 얻기 위해 다시 컴파일러로 수정 된 AST를 주입.

모두 불가능하지만 불가능하지는 않지만 약간의 작업이 필요합니다.

5

예 Java 코드와 함께 Groovy AST 변환을 사용할 수 있습니다. Groovy는 Java 바이트 코드로 컴파일하고 Java 라이브러리에서 빌드합니다. 두 언어 간 상호 운용성이 뛰어납니다.

groovy 사이트의 전체 섹션은 AST Transformations입니다.

다음은 Java/Groovy 혼합 응용 프로그램의 예제입니다. 표준 Java 인터페이스 및 구현이 있습니다. Groovy 클래스는 @Delegate AST 변환을 사용하고 invokeMethod도 사용합니다.

자바 클래스 :

interface IFoo { 
    public String someMethod(String arg1); 
} 

class Foo implements IFoo { 
    public String someMethod(String arg1) { 
     arg1+arg1; 
    } 
} 

그루비 클래스 :. 새로운 바()를 실행

class Bar implements IFoo { 
    @Delegate Foo foo = new Foo() 
    def otherMethod() { 
     someMethod("abcdef") 
    } 
} 

otherMethod() 'abcdefabcdef'반환합니다.

+0

http://groovy.codehaus.org/Category+and+Mixin+transformations는 내가 원하는 것입니다. 감사! – elhoim

관련 문제