我正在尝试学习 Ruby 词法分析器和解析器(whitequark 解析器),以了解更多关于从 Ruby 脚本进一步生成机器代码的过程。
在解析以下 Ruby 代码字符串时。
def add(a, b)
return a + b
end
puts add 1, 2
它产生以下 S 表达式表示法。
s(:begin,
s(:def, :add,
s(:args,
s(:arg, :a),
s(:arg, :b)),
s(:return,
s(:send,
s(:lvar, :a), :+,
s(:lvar, :b)))),
s(:send, nil, :puts,
s(:send, nil, :add,
s(:int, 1),
s(:int, 3))))
谁能解释一下生成的 S 表达式符号中:send关键字的定义?