RubyParser.new.parse "1+1"
s(:call, s(:lit, 1), :+, s(:array, s(:lit, 1)))
以上代码来自this link
为什么在Sexp中有+之后的数组。我只是想学习ruby解析器和整个AST的东西。我已经编程了一段时间但没有正式的计算机科学教育。那么请指出解释AST等的好文章。请不要龙书。我尝试了几次,但对这本书的理解不太多
答案 0 :(得分:2)
只是一个猜测:数组代表参数列表。 “+”消息通过参数列表发送到第一个“1”,参数列表只有一个项目,第二个“1”。
答案 1 :(得分:1)
在Ruby(或至少在MRI中),所有消息发送都只有一个参数:一个数组。如果发送不带参数的消息,则数组将为空,如果发送带有一个参数的消息(如本示例中的情况),则该数组将具有一个元素。