タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

rubyとASTに関するiga_kのブックマーク (2)

  • RubyVM::AbstractSyntaxTree で Node を辿る処理をシンプルに実装する - アジャイルSEの憂鬱

    Ruby の Enumerator を使うと簡単にRubyのコードを処理できて便利だったので、ブログに書いておく。 ast = RubyVM::AbstractSyntaxTree.parse(<<~RUBY) class User < ApplicationRecord def say(text) puts text end def sum(x, y) x + y end end RUBY enum = Enumerator.new { |y| nodes = ast.children until nodes.empty? nodes.select! { _1.is_a?(RubyVM::AbstractSyntaxTree::Node) } nodes.each { y << _1 } nodes = nodes.flat_map(&:children) end } method_na

    RubyVM::AbstractSyntaxTree で Node を辿る処理をシンプルに実装する - アジャイルSEの憂鬱
    iga_k
    iga_k 2023/11/30
  • YARV Maniacs 【第 13 回】 事前コンパイルへの道

    書いた人:ささだ はじめに お久しぶりです。もう前回から 2 年弱たってますね…。気を取り直して、今回は RubyKaigi 2015 で発表した Compiling Ruby scripts という発表の話をしようと思います。 動画が公開されているようですので、もしよかったらどうぞ(リンク先から見ることができます)。 この発表は、Ruby の命令列へのコンパイラを作ったよ、という話でした。 といっても、この連載では、ずっと YARV という仮想マシンのコンパイル後の命令コードがどうしたこうした、 という話をしていたので、すでにあるじゃないか、という気がしますが、今回の話は、事前にコンパイル(プリコンパイル)しておく、 というものです。 このハックのモチベーションは、(1) 起動時間を短くする (2) 利用メモリを削減する、の二つでしたが、結論を先に述べてしまうと、まだあまりうまくいってい

    iga_k
    iga_k 2019/06/01
    RubyVM::InstructionSequnece.load_iseqが入ったあとのささださん記事
  • 1