Сведения о вопросе

Gaukhar

11:18, 26th August, 2020

Теги

c   ruby   tree   interpreter    

Как получить доступ к Ruby AST из кода уровня C?

Просмотров: 363   Ответов: 2

Я понимаю, что Ruby 1.8 AST проходит во время выполнения с использованием оператора big switch, и многие вещи, такие как вызов метода в классе или родительском модуле, включают интерпретатор, который смотрит вверх и вниз по дереву, когда он идет. Есть ли простой способ получить доступ к этому AST в Ruby C расширение? Связано ли это с расширением Ruby API или требует взлома внутренних структур данных напрямую?



  Сведения об ответе

LAST

14:35, 4th August, 2020

Хорошей отправной точкой, вероятно, является чтение источника библиотеки ParseTree ,который позволяет вам добраться до AST и возиться с ruby.


  Сведения об ответе

davran

09:24, 21st August, 2020

Спасибо за подсказку. Вы правы-кажется, что ParseTree -это единственный код, в котором происходят какие-либо манипуляции с AST, за исключением того, что он на самом деле написан в RubyInline.

Итак, это странная смесь между кодом Ruby и C. Очень интересное чтение, однако.

Другая ссылка, конечно, eval.c из самого Ruby.

Мне придется изрядно почитать и то и другое, чтобы прийти в себя.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться