Вопросы | c

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

Вопрос

maetl | 622 просмотров | рейтинг: 1

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



Ответы

Orion Edwards

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


maetl

+ 1 -
Спасибо за совет. Вы правы - ParseTree, кажется, является единственным кодом, где происходят какие-либо манипуляции с AST, за исключением того, что он фактически написан на RubyInline. Итак, это странная смесь между Ruby и C-кодом. Очень интересное чтение, хотя. Другая ссылка, конечно, eval.c от самого Ruby. Это займет немало времени, чтобы прочитать оба, чтобы обдумать это.


Теги

c | ruby | tree | interpreter