2008-08-17 3 views
2

Ruby 1.8 AST은 큰 switch 문을 사용하여 런타임시 탐색된다는 것을 이해하고 클래스 또는 상위 모듈에서 메소드를 호출하는 것과 같이 많은 경우 해석기가 트리를 위아래로 탐색합니다. Ruby C 확장자로이 AST에 액세스하는 간단한 방법이 있습니까? Ruby 확장 API가 필요하거나 내부 데이터 구조를 직접 해킹해야합니까?C 레벨 코드에서 Ruby AST에 액세스하려면 어떻게해야합니까?

답변

1

좋은 시작점은 아마도 ParseTree 라이브러리의 출처를 읽는 것입니다. 그러면 루비에서 AST를 가져오고 엉망진창을 만들 수 있습니다.

1

팁 주셔서 감사합니다. 당신 말이 맞아요 - ParseTree은 AST 진행에 대한 유일한 코드 인 것 같습니다. 사실 RubyInline에 쓰여 있습니다.

그래서 Ruby와 C 코드가 이상하게 섞여 있습니다. 그래도 아주 재미있는 독서.

다른 참고 자료는 물론 Ruby 자체의 eval.c입니다.

둘 사이에 머리를 치기 위해 두 가지 읽기가 상당히 필요합니다.

+0

안녕하세요! 관심 없어, 뭐라고 쓰고있어? :) – horseyguy

관련 문제