为什么sexp到底有阵列

时间:2010-05-30 20:07:55

标签: ruby parsing

RubyParser.new.parse "1+1" 
s(:call, s(:lit, 1), :+, s(:array, s(:lit, 1))) 

以上代码来自this link

为什么在Sexp中有+之后的数组。我只是想学习ruby解析器和整个AST的东西。我已经编程了一段时间但没有正式的计算机科学教育。那么请指出解释AST等的好文章。请不要龙书。我尝试了几次,但对这本书的理解不太多

2 个答案:

答案 0 :(得分:2)

只是一个猜测:数组代表参数列表。 “+”消息通过参数列表发送到第一个“1”,参数列表只有一个项目,第二个“1”。

答案 1 :(得分:1)

在Ruby(或至少在MRI中),所有消息发送都只有一个参数:一个数组。如果发送不带参数的消息,则数组将为空,如果发送带有一个参数的消息(如本示例中的情况),则该数组将具有一个元素。